Как я могу сделать переменную в C с именем, указанным в таблице символов?Переменная с char [] name
что-то вроде:
char name[];
gets(name[]);
int name[] = 0;
Я надеюсь, что вы знаете, что я имею в виду.
Как я могу сделать переменную в C с именем, указанным в таблице символов?Переменная с char [] name
что-то вроде:
char name[];
gets(name[]);
int name[] = 0;
Я надеюсь, что вы знаете, что я имею в виду.
C, в отличие от языков сценариев ala Python, или Ruby, к которым вы можете привыкнуть, компилируется, не интерпретируется. Во время выполнения C не имеет таблицы имен имен, таких как вышеупомянутые языки сценариев, эта информация отбрасывается во время компиляции, и, таким образом, любое имя, которое вычисляется во время выполнения, не может быть превращено в адрес.
В конечном счете, поскольку вы описываете это, это невозможно на скомпилированных языках. Однако у нас есть альтернатива, найденная в коллекциях, таких как векторы и HashMaps, которые хранят информацию об именах во время выполнения, что позволяет нам получить к ней доступ. Опять же, к сожалению, у C нет каких-либо встроенных реализаций, но есть некоторые вокруг.
ohhhhhh я вижу, что он имеет в виду на char table Теперь! – James
Если я понимаю, что вы имели в виду по вашему ответу, я не согласен. C делает Quir, фазу препроцессора, которая имеет свой символ и таблицу поиска. – Ion
@Ion Фаза препроцессора является одним из начальных этапов компиляции. Вся эта информация теряется после факта. – Sinkingpoint
Вы не можете. По крайней мере, не с функциями ванильного языка C. Но помните, C имеет pointers, который иногда может делать что-то подобное.
Если указатели не то, что вам нужно, вам необходимо будет выполнить команду hash map. Языки программирования более высокого уровня встроены, но C нет.
Вы можете найти библиотеку, но если вы делаете это для обучения, я бы посоветовал имплицировать ее самостоятельно.
Это может быть то, что вы хотите. C имеет таблицу поиска в виде таблицы препроцессора, где вы определяете ключевые слова и текст, который идет с ними, которые добавляются во время компиляции. Таким образом, вы можете передать имя или все, что захотите, в качестве аргумента для программы во время компиляции, и если вы правильно ее кодируете, оно будет прикреплять это имя во время этапа препроцессора фазы компиляции к вашей переменной. Этап препроцессора - это то, что смотрит на ваш #include вверху, а также такие вещи, как #ifndef ... # def, #if ... # endif и т. Д., C preprocessor example
Так динамически названная переменная? – Sinkingpoint
Я не уверен, что вы подразумеваете под именем, указанным в таблице символов. – James
Вы не можете. – Praetorian