我正在编写微处理器(Coldfire)的程序,而且我不能每天访问微处理器培训师,所以我希望能够在计算机上执行我的一些代码。
因此,我试图通过定义测试在计算机上执行时跳过代码的一部分。
它不起作用。它试图编译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);
}发布于 2010-05-05 22:16:20
显而易见的问题是,您定义了_TEST_吗?您可以使用-D_TEST_在命令行中执行此操作。
我可以在定义代码时编译您的代码。
发布于 2010-05-05 22:17:24
通常不应该使用以下划线开头的符号名。它们保留给编译器和标准库使用。很可能已经在某个地方定义了测试。不过,它应该很容易检查。
您可能需要尝试使用#warning来告诉您何时构建测试机器,这将帮助您测试预处理器正在执行您期望的任务。
https://stackoverflow.com/questions/2777124
复制相似问题