1
A
回答
5
不能在标准C.
预处理器可以实现为一个单独的程序有没有对象文件的知识,所以它不可能是一个内置的宏。
编译器在理论上可以产生一个带有目标文件名的符号,但一旦目标文件被用户重命名,该符号就会失效。
你可以构建系统#define
对象名称:
# Compile ${module}.c to ${module}.o
cc ${CPPFLAGS} ${CFLAGS} -DOBJNAME=${module}.o -c -o ${module.o} ${module}.c
但有关重命名问题依然存在。
(这只是一个壳代码片段,但它也可以变成一个Makefile
规则,我想。)
+1
我认为你的第三段是最重要的一点。你真正可以得到这些信息的唯一方法是从*链接器*。如果您打开了调试程序,它可能仍会嵌入到可执行文件中,但您必须转到平台的调试API(或自行进行逆向工程)以获取信息。这不是微不足道的。 – 2011-02-16 14:46:34
0
我不认为这存在。我唯一能想出的就是你可以使用## glue宏将__FILE__
与“.o”结合起来......但即使这样也不是你要求的那样,因为你会得到foo.c.o.
相关问题
- 1. FOSUserBundle翻译路由名称
- 2. C和C++中的翻译单元
- 3. LLVM翻译单元
- 4. C++代码翻译和名称查询
- 5. Opengl对象翻译
- 6. 矩阵对象的翻译
- 7. Dspace社区名称翻译
- 8. pysnmp prettyPrint翻译OID名称
- 9. CSS翻译已经翻译的元素
- 10. 编译时检查MVC3路由名称
- 11. 跨C++翻译单元初始化
- 12. AttributeError的:“名单”对象有没有属性“翻译”
- 13. CakePHP的月份名称翻译
- 14. 带翻译模型名称的Rails i18n
- 15. 如何翻译@Enumerated属性的名称?
- 16. 翻译Facebook iFrame标签的名称App
- 17. 带有一些平等翻译的角度翻译对象
- 18. 设置谷歌翻译不翻译名称
- 19. 翻译C++来MIPS汇编
- 20. 翻译c/C++?
- 21. Django-cms可翻译对象
- 22. 在nodeJS中翻译对象
- 23. Javascript月翻译对象
- 24. AngularJS翻译对象属性
- 25. libclang缓慢地重新编译翻译单元
- 26. 使用ANTLR构建自己的C#编译器:编译单元
- 27. 翻译的VBScript C#
- 28. RegionInfo:DisplayName由CurrentUICulture翻译
- 29. 由编译,前,后,但不是由指令控制器返回的类名称
- 30. C++名单的remove_if编译错误
对于具有预编译头文件的编译器来说,这会很困难。 – 2011-02-16 14:44:21