В C/C++ доступ к переменной, не заданной, приведет к ошибке компилятора. Таким образом, в некотором смысле это присуще тому, как это работает. Вы не можете сделать это во время выполнения, по крайней мере, не так, как вы пытаетесь сделать, и не должны быть нужны, потому что вы не можете назвать новые переменные во время выполнения в первую очередь, поэтому вы уже должны знать переменные там.
Единственный способ сделать это будет косвенно с помощью макросов. Макросы не могут проверить, определена ли сама переменная, но определение может быть сопряжено с определением переменной, и вы можете проверить маркер определения.
#define A_VARIABLE 1
int a_variable = 60;
И позже:
#ifdef A_VARIABLE
...
#endif
Как и большинство макросов, это, вероятно, лучше, чтобы избежать такого поведения - однако, я видел, как это используется, чтобы иметь дело с платформой-зависимость некоторых переменных.
Динамическая память - это другое дело. Поскольку вы не упомянули об этом, я не буду вдаваться в него, но достаточно сказать, что это более сложная проблема, которая доказывает проклятие многих программистов и источник многих ошибок времени выполнения.
Какая большая вещь вы пытаетесь сделать? – chris
На заметке, обратите внимание на ошибку компилятора (вы не указали _runtime_). :-) –
В этом примере вместо 'cout << isExist (" var1 ")', вы можете написать 'cout << var1'. Если код компилируется, существует 'var1'; если он не компилируется, 'var1' не существует. - Дело в том, что в любой точке кода все переменные, которые существуют, известны во время компиляции, и ничего не узнается во время выполнения.Поэтому возникает вопрос, почему вы хотите протестировать что-то вроде этого во время выполнения, а не во время компиляции. –