Мне интересно, может ли условный оператор фактически препятствовать работе другого несвязанного кода. Например ниже:Могут ли условные операции и фигурные скобки влиять на код?
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));
}
Все еще не работает. EDIT: «Не работает», я имею в виду, что компилятор дает сообщение об ошибке, такое как «strFileName» не было объявлено, что означает, что это объявление вообще не запускалось.
Я понятия не имею, почему фигурные скобки окажут такое большое влияние на код. Когда я избавлюсь от фигурных скобок, код работает как волшебство ... Может ли кто-нибудь объяснить это, пожалуйста? Благодарю.
Что именно вы имеете в виду под «не работает»? – MRAB
Пожалуйста, обратитесь к моему отредактированному вопросу, спасибо. –