我正在编程到微处理器(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);
}
答案 0 :(得分:1)
显而易见的问题是你定义了_TEST_
吗?您可以使用-D_TEST_
在命令行中执行此操作。
我可以在定义代码时编译代码。
答案 1 :(得分:0)
通常不应使用以下划线开头的符号名称。这些保留供编译器和标准库使用。可能已经在某处定义了 TEST 。但是,检查它应该很容易。
您可能希望尝试使用#warning
告诉您何时构建测试计算机,这将帮助您测试预处理器正在执行您期望的操作。