我不明白为什么我的程序在#define
之后会出现段错误:
if(QProcess::systemEnvironment().filter("toto").size() == 1 )
if(!QProcess::systemEnvironment().filter("toto").at(0).contains("13"))
#define tata
我在另一个班级使用这个代码,他像老板一样跑:P
当if为false时,程序会出现段错误
我知道#define是一个预编译器指令,我理解了段错误,但为什么这个相同的代码在我的另一个类中运行没有问题,如果我的环境变量被更改,程序接受修改..我指定代码有没有重新编译..
答案 0 :(得分:2)
#define
是一个预编译器指令,它由编译器解析和使用,而不是在运行时。所以它不遵守你的if
条件。因此,你的if
实际上正在调整执行此代码之后的任何内容......无论它是什么。
解决方案:使用布尔变量,而不是宏。
bool tata = false;
if(QProcess::systemEnvironment().filter("toto").size() == 1 )
if(!QProcess::systemEnvironment().filter("toto").at(0).contains("13"))
tata = true;
但详细信息将取决于您首先使用tata
进行的操作。