Заключение в кавычки C++ FAQ ,
[7.8], Каково различие между структурой ключевых слов и классом?
участники и базовые классы структуры общедоступны по умолчанию, в то время как в классе, они принимают значение по умолчанию к частному.Примечание: необходимо сделать базовые классы явно общедоступными, частными, или защищенными, вместо того, чтобы полагаться на значения по умолчанию.
Структура и класс иначе функционально эквивалентны.
хорошо, достаточно того писклявого чистого разговора о техно. Эмоционально, большинство разработчиков делает сильное различие между классом и структурой. Структура просто чувствует себя подобно открытой груде битов с очень мало в способе инкапсуляции или функциональности. Класс чувствует себя подобно проживанию и ответственному члену общества с интеллектуальными сервисами, сильным барьером инкапсуляции и четко определенным интерфейсом. Так как это - коннотация, которую уже имеет большинство людей, необходимо, вероятно, использовать ключевое слово структуры, если у Вас есть класс, который имеет очень немного методов и имеет общедоступные данные (такие вещи действительно существуют в хорошо разработанных системах!), но иначе необходимо, вероятно, использовать ключевое слово класса.
Предполагается, что последовательность событий здесь будет работать следующим образом:
-pg
опцией -pg
option gmon.out
gprof
Проблема в том, что шаг 4 никогда не выполняется. Информации об этой конкретной ошибке очень мало. Похоже, что за последние несколько лет все пришли к общему мнению, что Apple предпочла бы вместо этого использовать Shark, и они очень не торопились исправлять ошибки и тому подобное с помощью gprof
.
Вкратце: установите Xcode, человек-акула
Похоже, test
построен с использованием архитектуры, которую gprof
не ожидает. Попробуйте следующее:
$ cat > test2.c
#include <stdio.h>
int main() { printf("test\n"); return 0; }
^D
$ gcc -arch i386 -pg -o test2 test2.c
$ file test2
test2: Mach-O executable i386
$ ./test2
test
$ gprof test2
... bunch of output ...
$ gcc -arch ppc -pg -o test2 test2.c
$ file test2
test: Mach-O executable ppc
$ ./test2
test
$ gprof test2
gprof: file: test2 is not of the host architecture
$ arch -ppc gprof test2
... same bunch of output ...
Более новая MacOS поддерживает запуск исполняемых файлов с архитектурой IBM PPC и Intel x86. Некоторые из цепочек инструментов кажутся немного сложными по этому поводу. Gprof, похоже, ожидает, что исполняемый файл будет в собственной архитектуре. Однако, если вы используете утилиту arch
для принудительного выполнения неродной архитектуры, то, похоже, она работает правильно. Некоторое время назад обсуждали это в другом контексте . Я добавил туда несколько полезных ссылок и дополнительную информацию.
К сожалению, gprof
не работает в Mac OS X. Возможно, вы захотите использовать вместо него Shark
. Он является частью инструментов разработчика в / Developer / Applications / Performance Tools / Shark
.
Обновление: Похоже, что gprof
теперь работает в Mac OS X 10.6 (Snow Leopard) с использованием последних инструментов разработчика.