c++一个条件编译的问题
来源:百度知道 编辑:UC知道 时间:2024/06/10 08:16:41
代码如下:
\\很简单的一个例子
#include<iostream>
using namespace std;
void main()
{
int a=10;
#if (a>1)
cout<<"a>1"<<endl;
#else
cout<<"a<=1"<<endl;
#endif
}
-------------------------------
为什么编译运行后是a<=1
按道理应该是执行a>1的才对啊
楼下的我知道那样可以,我现在是在用条件编译做演示,不过还是谢谢你啊
\\很简单的一个例子
#include<iostream>
using namespace std;
void main()
{
int a=10;
#if (a>1)
cout<<"a>1"<<endl;
#else
cout<<"a<=1"<<endl;
#endif
}
-------------------------------
为什么编译运行后是a<=1
按道理应该是执行a>1的才对啊
楼下的我知道那样可以,我现在是在用条件编译做演示,不过还是谢谢你啊
#if在这里是预处理命令
#if语句要判断是宏的值,宏的值只有通过#define或者在命令行-DXXX的形式定义。
用int a=10;形式定义了一个整型常量,而不是一个宏。
对于宏的替换,是在预编译阶段就进行的,会把所有的宏替换为实际的值。而对int a=10;的解析,却是在编译阶段。
在预编译阶段,只认#define定义的宏,不会理会int a=10;定义出来的常量,所以#if永远为假。
#include<iostream>
using namespace std;
void main()
{
int a=10;
#if (a==0)
cout<<"a==0"<<endl;
#else
cout<<"a!=0"<<endl;
#endif
}
输出的是a==0;
条件编译是在程序的编译时就开始运算的,此时a=0,而a=10这条语句是在运行(也就是编译后)时才进行的。
#include<iostream>
using namespace std;
main()
{
int a=10;
if (a>1)
cout<<"a>1"<<endl;
else
cout<<"a<=1"<<endl;
}
所有#号不要,endif不要的.