2015-06-05 3 views
0

Я изучаю язык программирования C.Есть ли способ получить фактический тип из строкового значения?

Есть ли хороший/разумный способ получить фактический тип из строкового значения?

Я уже слышал, что оператор sizeofпочти компиляция.

Скажем, у нас есть следующий строковый литерал, который может быть предоставлен во время выполнения.

char *name_of_long_long_int = "long long int"; 

Есть ли способ сделать что-то из следующих эффектов?

size_t size_of_long_long_int = sizeof(long long int); 
+2

Что вы подразумеваете под «способом получения фактического типа из строкового значения»? В строках C представлены как набор символов, которые должны быть типа 'char' Like 'char *' или 'char a []' .. Чтобы рассчитать длину, вы можете использовать 'strlen()' – Gopi

+0

@Gopi Извините за спутанность сознания. Я действительно хочу знать, имеет ли C что-то вроде [Class.forName (String)] (http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#forName-java.lang .String-) –

+1

@JinKwon, нет, нет. –

ответ

1

Нет, не существует встроенной функции, которая может выполнять такое сопоставление.

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

Существует одна библиотека называется «typedef.h» // Он доступен в C++, я не знаю о C

Он имеет некоторые функции, такие как type.id(), который может сделать обратное отображение, может будь вы можете найти способ в этом lib.

// Только для C++ не для C, как вы просили, но все же вы можете получить некоторое представление:

Вы также можете сделать это с помощью словаря, используя карту

Вот очень полезно ссылку для этого: Is there a way to instantiate objects from a string holding their class name?

Смежные вопросы