C++ gcc相当于#pragma注释
我正在尝试编写一个宏,用gcc编译器向可执行文件添加注释。这不是为了链接,我只是想添加文本注释。在gcc中是否有与此类似的“pragma注释”?我不确定“向可执行文件添加注释”是什么意思。谁或什么人将消费、展示甚至注意到这些评论?然而,如果您只是想确保某个字符串嵌入到程序的某个地方,那么只需在文件范围中将其声明为普通(C)字符串C++ gcc相当于#pragma注释,c++,gcc,pragma,C++,Gcc,Pragma,我正在尝试编写一个宏,用gcc编译器向可执行文件添加注释。这不是为了链接,我只是想添加文本注释。在gcc中是否有与此类似的“pragma注释”?我不确定“向可执行文件添加注释”是什么意思。谁或什么人将消费、展示甚至注意到这些评论?然而,如果您只是想确保某个字符串嵌入到程序的某个地方,那么只需在文件范围中将其声明为普通(C)字符串 static const char my_comment[] = "This comment should appear in the compiled executa
static const char my_comment[] = "This comment should appear in the compiled executable";
我不确定“向可执行文件添加注释”是什么意思。谁或什么人将消费、展示甚至注意到这些评论?然而,如果您只是想确保某个字符串嵌入到程序的某个地方,那么只需在文件范围中将其声明为普通(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"
如果您不想将
.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可能有用。但有两个警告:
我想我问错了问题,但我会接受这个答案,因为它充分解决了我的问题。我想我问错了问题,但我会接受这个答案,因为它充分解决了我的问题。如果成功,是否会明显地在“.comment”之后有额外的二进制文件在目标文件中?我不太明白你的问题。这段代码将把字符串“Hello World”作为文本添加到.comment部分。默认情况下,Gcc已经在该节中生成了自己的版本字符串。在AIX 6.0.1世界中,使用
.csect.comment[RO]
而不是.section.comment
,使用.csect.text[PR]
而不是.section.text
作为编译器、汇编程序和链接器比预期的要旧。如果成功,在目标文件中“.comment”之后是否有额外的二进制文件?我不太理解你的问题。这段代码将把字符串“Hello World”作为文本添加到.comment部分。默认情况下,Gcc已经在该节中生成了自己的版本字符串。在AIX 6.0.1中,使用.csect.comment[RO]
而不是.section.comment
,使用.csect.text[PR]
而不是.section.text
,因为编译器、汇编程序和链接器比预期的要旧。