[英]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.