相当于#pragmacomment的gcc

gcc equivalent of #pragma comment

本文关键字:gcc #pragmacomment 相当于      更新时间:2023-10-16

我正在尝试编写一个宏,用gcc编译器将注释添加到可执行文件中。这不是为了链接的目的,我只是想添加文字评论。在gcc中是否有相应的#pragma注释?

我不知道"向可执行文件添加注释"是什么意思。谁或什么会消费、显示甚至注意到这样的评论?尽管如此,如果您只是想确保某个字符串嵌入到程序中的某个位置,那么只需在文件范围内将其声明为普通(C)字符串即可。

static const char my_comment[] = "This comment should appear in the compiled executable";

如果你不想在.data部分(static const char[]将放在那里)添加注释,或者相反,你想从.comment部分轻松找到注释,你可以在那里添加一些内联汇编:

__asm__(".section .commentnt"
        ".string "Hello World"nt"
        ".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