gcc эквивалент #pragma комментария
Я пытаюсь написать макрос, который добавляет комментарий к исполняемому файлу с помощью компилятора gcc. Это не для ссылок, я просто хочу добавить текстовые комментарии. Для этой цели в gcc есть эквивалент #pragma?
3 ответа
Я не уверен, что значит "добавить комментарий к исполняемому файлу". Кто или что собирается потреблять, отображать или даже замечать такие комментарии? Тем не менее, если вы просто хотите убедиться, что какая-то строка внедрена где-то в вашей программе, просто объявите ее как обычную (C) строку в области видимости файла.
static const char my_comment[] = "This comment should appear in the compiled executable";
Если вы не хотите загромождать .data
раздел (где static const char[]
будет) с комментариями или, наоборот, хотите, чтобы комментарии были легко найдены из .comment
раздел, вы можете добавить туда комментарии с небольшой встроенной сборкой:
__asm__(".section .comment\n\t"
".string \"Hello World\"\n\t"
".section .text");
Gcc также имеет #ident
директива, которая копирует текст в соответствующий раздел, если таковой имеется. В случае ELF это будет раздел.comment. Это решение, даже если директива не является стандартной, вероятно, более переносимо, чем первое.
#ident "Hello World"
#ident может быть полезен Но есть две оговорки:
- Это может не работать на все цели.
- Это не стандарт языка C и не стандарт GNU.
Директива #ident принимает один аргумент - строковую константу. В некоторых системах эта строковая константа копируется в специальный сегмент объектного файла. В других системах директива игнорируется. Директива #sccs является синонимом #ident.
Эти директивы не являются частью стандарта C, но они также не являются официальными расширениями GNU.