我想知道如果一個條件操作符實際上可以防止其他無關的代碼工作。例如低於:可以使用條件操作和花括號來影響代碼嗎?
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」沒有聲明,這意味着這個聲明根本沒有運行。
我不知道爲什麼大括號會在代碼中產生如此大的影響。當我擺脫大括號時,代碼就像魔術一樣......任何人都可以解釋這一點嗎?謝謝。
究竟你「不工作」是什麼意思? – MRAB
請參閱我編輯的問題,謝謝。 –