你能在汇编中添加预处理器指令吗?

Ale*_*anu 2 c assembly c-preprocessor

我想基于头文件中的定义执行一些汇编指令.

比方说,在test.h我有#define DEBUG.

test.asm我想以某种方式查询喜欢#ifdef DEBUG做些什么?

这样的事可能吗?我无法在类似的问题或网上找到有用的东西.

Wou*_*lst 7

C 预处理器只是一个输入数据(C 源文件)、转换数据并再次输出数据(翻译单元)的程序。

您可以像这样手动运行它:

gcc -E < input > output
Run Code Online (Sandbox Code Playgroud)

这意味着您可以根据需要在 .txt 文件或 Latex 文件上运行 C 预处理器。

当然,困难的一点是如何将其集成到构建系统中。这很大程度上取决于您使用的构建系统。如果涉及 makefile,则为汇编程序文件创建一个目标:

assembler_file: input_1 input_2
        gcc -E < $^ > $@
Run Code Online (Sandbox Code Playgroud)

然后以通常编译它的方式编译“assembler_file”。


Jes*_*ter 5

是的,您可以在asm文件上运行C预处理器.取决于您的构建环境如何执行此操作.gcc例如,为具有扩展名.S(大写)的文件自动运行它.请注意,无论您包含什么,都应该兼容asm.通常的做法是有条件地包含标题的一部分,使用#ifndef ASSEMBLY或类似的结构,因此您可以在同一标题中包含C和ASM部分.