Подтвердить что ты не робот

Есть ли способ распечатать тип переменной/указателя в C?

Я хочу распечатать (или иным образом установить) тип некоторой переменной в моей программе. Есть ли хороший способ сделать это? По добру, я имею в виду способ, который работает, даже если это означает намеренное бросание ошибок компилятора.

Например:

client.c:55: error: incompatible types in assignment

- это ошибка, которую я получаю прямо сейчас. Что я ХОЧУ, это сказать мне что-то вроде:

client.c:55: error: attempting to assign type struct a to type struct b

или функцию, которую я могу использовать так:

printf(gettype(x));

который выводит:

struct b
4b9b3361

Ответ 1

попробуйте выполнить отладку с помощью GDB, он распечатает все свойства, связанные с переменной, включая ее тип. Но ваша программа должна скомпилироваться перед использованием GDB.

Ответ 2

Я только что узнал, как это сделать.

printf("%d", variable);

Если переменная не является int, тогда gcc -Wall будет жаловаться на то, что типы не совпадают, - и выведет тип переменной, что именно то, что вы ищете.

Ответ 3

Если вы используете gcc или gcc-совместимый компилятор, вы можете использовать (явно нестандартную и не переносную) typeof, которое работает так же, как sizeof.

Ответ 4

В C вы указываете тип при объявлении переменной. Это единственная информация, которую компилятор имеет, когда он жалуется на назначение (то есть он не будет использовать тип среды выполнения объекта, но у вас есть статический тип).

Перейдите к коду, найдите строку 55, проверьте, какие переменные есть, и найдите типы в коде. В C нет даже перегрузок, типы являются такими же статичными и простыми, как и на любом языке.