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