相当于#pragmacomment的gcc
gcc equivalent of #pragma comment
我正在尝试编写一个宏,用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可能很有用。但有两个注意事项:
- 它可能不适用于所有目标
- 这既不是C语言标准,也不是GNU编码标准
"#ident"指令接受一个参数,即字符串常量。关于一些系统中,该字符串常量被复制到对象文件。在其他系统上,该指令被忽略。"#sccs"指令是"#ident"的同义词。
这些指令不是C标准的一部分,但它们不是GNU官方扩展。
https://gcc.gnu.org/onlinedocs/cpp/Other-Directives.html
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用gcc从静态链接的文件中查找可选符号
- 普通环路未使用gcc 4.8.5自动矢量化
- 有了gcc,是否可以链接库,但前提是它存在
- 在clang++预处理器中确定gcc工具链版本
- 为什么 gcc 编译这个而 msvc 没有
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何使用Clang/GCC在Mac上为C/C++设置VSCode
- 相当于#pragmacomment的gcc