Есть ли способ узнать, была ли переменная объявлена ​​в C? - PullRequest
1 голос
/ 08 апреля 2010

Я реализую некоторые генераторы кода, я хотел бы знать, есть ли способ в C, если переменная уже была объявлена?

Я пытался найти что-то с помощью препроцессора, но безуспешно ...

спасибо.

Ответы [ 5 ]

5 голосов
/ 08 апреля 2010

C строго статичен, вы не можете "искать", если переменная уже была объявлена.Если вы создаете генератор кода, почему бы не прочитать строки кода и посмотреть, что было объявлено?

1 голос
/ 08 апреля 2010

Нет, нет. Это большая часть того, что делают компиляторы.

Распространенным способом создания уникального имени переменной является использование очень маловероятного имени переменной, если возможно, в сочетании с номером строки. Что-то вроде

// beware, brain-compile code ahead!
a_rather_unlikely_variable_name_by_sbi_ ## __LINE__
0 голосов
/ 29 октября 2017

я довольно поздно, ну, есть простой способ узнать это с помощью текстовых файлов; Напишите имя переменной внутри файла сразу после его объявления, а затем проверьте, написано ли имя. просто сделайте 3 макроса "DEF", "IF_DEF" и "IF_NOT_DEF", и это выглядит хорошо. Вы не можете искать в C, но вы можете искать в файле. Но для этого нужно немного памяти.

0 голосов
/ 08 апреля 2010

Сама переменная генерируется вашим генератором или что-то, что вводит пользователь? Когда вы сами генерируете переменную, вы можете создать токен препроцессора вместе с переменной и позже проверить, существует ли этот токен.

0 голосов
/ 08 апреля 2010

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

Вы можете попытаться что-то взломать препроцессором для определенных переменных, что-то вроде стандартного #ifdef вверху каждого файла включения.Это не будет учитывать область действия, поскольку препроцессор работает намного раньше, чем компилятор.

C не очень динамичный язык в этом смысле.

...