今天碰到一个问题,就是在程序编译的时候我怎么知道代码中的一个宏编译的时候被定义了,因为有时候宏定义是写在工程的配置属性里的,难免会出什么差错。
那么为了验证是否定义了某个宏可以使用error宏。#error宏用于在编译时提示一个错误并且会停止编译。
比如下面我们就来检测一个叫_TEST_的宏是否被定义了,代码如下:
#include
#include#ifdef _TEST_
void test()
{
print("test function/n");
}
#else
#error("function test not defined")
#endifint main()
{
test();
return 0;
}
这段程序如果在工程配置中没有定义_TEST_宏的话在VS2008中编译的时候就无法编译,会有如下的提示:
Error 1 fatal error C1189: #error : ("function test not defined") d:/vs2008/test/test/main.c 10 test
这样就可以明确一个宏是不是被定义了。