我有这个代码
#include <stdio.h>
void test2()
{
printf("start test2\n");
printf("end test2\n");
}
void main ()
{
printf("abc\n");
#ifdef A
test2();
#endif
}
编译它gcc test.c -o test -static -D B
当我运行程序时,我发现它test2
没有运行(很好)
但是当我运行字符串时,我可以end test2
在二进制文件中看到它。为什么?gcc 不需要编译它!
当我编译这段代码
#include <stdio.h>
void test1();
void test2()
{
printf("start test2\n");
test1();
printf("end test2\n");
}
void main ()
{
printf("abc\n");
#ifdef A
test2();
#endif
}
和gcc test.c -o test -static -D B
gcc 告诉我undefined reference to 'test1'
为什么?我不希望那个 gcc 甚至编译函数test2
,所以 gcc 不需要知道我使用了那个未定义的函数。
test2
当我通过-D
不等于时,我能做什么让 gcc 看不到A
?