Я имею в виду такой случай (это, конечно, только ложный код/идея/, поскольку я знаю, что это не работает):
int main() {
int my_int = 42;
#ifdef my_int
my_int = 43;
#else
int my_int = 43;
}
Я знаю, что программа c/c++ не может видеть имена переменных и не может определить, было ли это задано или нет, но компилятор может это сделать, и я спрашиваю, есть ли способ прямого компилятора для данного действия, например, опускать или вставлять фрагмент кода, когда он сталкивается с ситуацией, когда в одном блоке есть повторяющиеся объявления.
Нет. Единственное, что может случиться, когда у вас есть повторяющиеся объявления, - ошибка компилятора. Он всегда плохо сформировался. И поскольку предварительный процессор не знает переменные, вы также не можете использовать это.
Нет, нет способа. И даже если бы это было, использование его пошло бы по пути к безумию.
Если вы знаете, что объявление символа зависит от определенной константы, используйте #ifdef
для этой константы, чтобы решить, что делать.
Если вы не знаете, что означает условное обозначение символа, вам действительно не следует возиться с этим символом, потому что, очевидно, он является внешним по отношению к вашему проекту.