我想知道条件运算符是否真的可以阻止其他不相关的代码工作。例如下面:
typedef char WCHAR_T;
#define STRLEN(x) strlen(x)
if (argc > 2)
{
WCHAR *pFileName = argv[1];
basic_string <WCHAR> strFileName(pFileName, STRLEN(pFileName));
}
在上面的代码中,pFileName、argv[1] 和 strFileName 与比较无关argc > 2
。假设命令行参数非常好。但是,此代码不适用于该比较。另外,即使我将代码更改为以下格式:
typedef char WCHAR_T;
#define STRLEN(x) strlen(x)
{
WCHAR *pFileName = argv[1];
basic_string <WCHAR> strFileName(pFileName, STRLEN(pFileName));
}
还是不行。编辑:“不起作用”,我的意思是编译器给出错误消息,例如“strFileName”没有声明,这意味着这个声明根本没有运行。
我不知道为什么花括号会对代码产生如此大的影响。当我摆脱花括号时,代码就像魔术一样工作......有人可以解释一下吗?谢谢。