Есть ли способ проверить, объявлена ли переменная во время компиляции?

0

Я имею в виду такой случай (это, конечно, только ложный код/​​идея/, поскольку я знаю, что это не работает):

int main() {
  int my_int = 42;
  #ifdef my_int
    my_int = 43;
  #else
    int my_int = 43;
}

Я знаю, что программа c/c++ не может видеть имена переменных и не может определить, было ли это задано или нет, но компилятор может это сделать, и я спрашиваю, есть ли способ прямого компилятора для данного действия, например, опускать или вставлять фрагмент кода, когда он сталкивается с ситуацией, когда в одном блоке есть повторяющиеся объявления.

  • 1
    Это невозможно сделать с помощью оператора препроцессора, потому что препроцессор не знает эту информацию. Только компилятор может это сделать. Что это не так.
  • 1
    Если ваша функция настолько велика, что вам это понадобится, вам стоит подумать о ее разделении ...
Показать ещё 3 комментария
Теги:

2 ответа

6
Лучший ответ

Нет. Единственное, что может случиться, когда у вас есть повторяющиеся объявления, - ошибка компилятора. Он всегда плохо сформировался. И поскольку предварительный процессор не знает переменные, вы также не можете использовать это.

1

Нет, нет способа. И даже если бы это было, использование его пошло бы по пути к безумию.

Если вы знаете, что объявление символа зависит от определенной константы, используйте #ifdef для этой константы, чтобы решить, что делать.

Если вы не знаете, что означает условное обозначение символа, вам действительно не следует возиться с этим символом, потому что, очевидно, он является внешним по отношению к вашему проекту.

  • 0
    Все неправильно используется путь к безумию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню