[英]Unable to include ASM header file in C without losing preprocessor
簡潔版本:
我希望能夠在定義匯編器宏macros.S
,並從里面使用它們asm()
在GNU C.聲明
我可以用asm(".include \\"macros.S\\"");
靠近我的C源代碼頂部,但我希望macros.S
能夠通過C預處理器。
長版:
在GCC asm中, *.S
文件由C預處理器預處理,允許使用C樣式#define
等。
在GCC C中,您可以通過編寫asm(".include \\"myasmheader.S\\"");
來包含asm頭文件(可能包括asm宏定義, .set
聲明等asm(".include \\"myasmheader.S\\"");
靠近文件頂部。
以這種方式包含ASM頭文件允許您在asm塊中使用asm宏。
不幸的是,這樣做不會在包含的.S
文件上調用C預處理器(因為.include
在編譯過程的后期完成),因此#define
不再被替換。
那么有沒有辦法在C文件中正確包含.S
文件?
其他一些編譯器支持:
#asm
#include "myasmheader.S"
#endasm
哪個不會出現這樣的問題。 但是,唉,GCC似乎要求C文件中的所有asm都是字符串形式。
如果沒有使用asm(不是一個選項,重度混合asm和c的嵌入式DSP項目),或者在ASM文件中刪除C預處理器的使用,可以做些什么呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.