预处理器不跳过asm指令

时间:2010-05-05 22:07:16

标签: c assembly c-preprocessor

我正在编程到微处理器(Coldfire),我每天都无法访问微处理器培训师,所以我希望能够在计算机上执行一些代码。

所以我试图通过定义 TEST 在计算机上执行时跳过部分代码。

它不起作用。它试图编译asm代码并且死于抱怨不知道寄存器名称(它们被定义为可以正常编译Coldfire,而不是我的Intel Core Duo)。

任何想法为什么它不起作用?或者可能是另一种在PC上运行代码而不将其注释掉的方法?

这是我项目的示例代码:


inline void ct_sistem_exit(int status)
{
#ifdef _TEST_
    exit(status);
#else
    asm volatile(
            "moveb #0,%%d1\n\t"
            "movel #0, %%d0\n\t"
            "trap #15\n\t"
            :
            :
            : "d0", "d1"
            );
#endif /* _TEST_ */
}

如果它有帮助:在Netbeans 6.8上使用gcc3和cygwin

以及我定义_TEST_的方式:



#define _TEST_
#include "mycode.c"

int main(int argc, char** argv)
{
    ct_sistem_exit(0);
}

2 个答案:

答案 0 :(得分:1)

显而易见的问题是你定义了_TEST_吗?您可以使用-D_TEST_在命令行中执行此操作。

我可以在定义代码时编译代码。

答案 1 :(得分:0)

通常不应使用以下划线开头的符号名称。这些保留供编译器和标准库使用。可能已经在某处定义了 TEST 。但是,检查它应该很容易。

您可能希望尝试使用#warning告诉您何时构建测试计算机,这将帮助您测试预处理器正在执行您期望的操作。