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 может быть полезен Но есть две оговорки:

  1. Это может не работать на все цели.
  2. Это не стандарт языка C и не стандарт GNU.

Директива #ident принимает один аргумент - строковую константу. В некоторых системах эта строковая константа копируется в специальный сегмент объектного файла. В других системах директива игнорируется. Директива #sccs является синонимом #ident.

Эти директивы не являются частью стандарта C, но они также не являются официальными расширениями GNU.

https://gcc.gnu.org/onlinedocs/cpp/Other-Directives.html

Другие вопросы по тегам