我想知道条件运算符是否可以实际阻止其他不相关的代码工作.例如下面:
typedef char WCHAR_T;
#define STRLEN(x) strlen(x)
if (argc > 2)
{
WCHAR *pFileName = argv[1];
basic_string <WCHAR> strFileName(pFileName, STRLEN(pFileName));
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,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));
}
Run Code Online (Sandbox Code Playgroud)
仍然无法正常工作.编辑:通过"不工作",我的意思是编译器提供错误消息,如"strFileName"未声明,这意味着此声明根本没有运行.
我不知道为什么花括号会对代码产生如此大的影响.当我摆脱花括号时,代码就像魔术一样......有人能解释一下吗?谢谢.