使用GCC预处理C代码

问题描述:

我有一些需要预处理的C源文件,以便我可以使用其他应用程序在我的文件中添加代码覆盖检测代码。 要做到这一点,我用GCC(我使用这个在LEON2处理器所以这是一个有点修改,但它本质GCC 3.4.4)使用以下命令行:使用GCC预处理C代码

sparc-elf-gcc -DUNIT_TEST -I. ../Tested_Code/0_BSW/PKG_CMD/MEMORY.c -E > MEMORY.i 

使用标准文件这个作品完美的,但是这个程序员使用了一个密码,不管我做什么,代码都不会被预处理。我不明白为什么因为我将-DUNIT_TEST传递给GCC明确定义它。

有没有人有任何线索可能导致这种情况?我检查了生成的.i文件,并且正如我所期望的那样,我的UNIT_TEST代码不在其中,所以在检测时出现错误。

任何包裹在#ifndef中的东西只有在未定义的情况下才会被解析,因此您需要移除该定义以获取该块内的所有代码。如果预处理时间符号未定义,GCC不能为所有#ifdef和#ifndef吐出预处理信息。

+0

谢谢耶稣,当我发布这个,我明白我的问题,这是清早在这里:P抱歉的家伙浪费你的时间...这是我的编码器,使用ifndef而不是idef ... – Leo

+0

没关系我已经在尖叫之前盯着代码,为什么只是意识到这是一个愚蠢的错误。 –