아니, 당신은 t = (typeof(x) == int) ? a : b;
도 int t = typeof(x);
같은 typeof
을 사용할 수 없습니다.
당신이 C11 미만인 경우, _Generic
이 도움이 될 수 있습니다
당신은 * 컴파일러 *에 대한 설명서를 읽을 필요 표준 C.에는`typeof` 운영자가 없습니다
#include <stdio.h>
enum {TYPE_UNKNOWN, TYPE_INT, TYPE_CHAR, TYPE_DOUBLE};
#define type_of(T) _Generic((T), int: TYPE_INT, char: TYPE_CHAR, double: TYPE_DOUBLE, default: 0)
int main(void)
{
double a = 5.;
int t = type_of(a);
switch (t) {
case TYPE_INT:
puts("a is int");
break;
case TYPE_CHAR:
puts("a is char");
break;
case TYPE_DOUBLE:
puts("a is double");
break;
default:
puts("a is unknown");
break;
}
return 0;
}
(안 코드 :: 블록 IDE) 더 많은 정보를 찾으십시오. 또한, 당신이하고 싶은 일을하지 마십시오. 99.99 %의 모든 경우에 당신이해야 할 일이 아닙니다. 당신이 * 왜 * 당신이 그것을하고 싶은지, * 실제 문제 *가 당신이 풀고 싶은 것이 무엇인지를 설명한다면 아마도 우리는 대신 당신을 도울 수 있습니다. –
'var'의 타입이'int' 인 경우'typeof (var)'는'int'입니다. 'type a = int; '또는 비슷한 것을 말할 수 있습니까? 그것은 무엇을 의미할까요? 왜 그렇게 필요한거야? –
자바에서'Class c = "foo".getClass();를 작성하는 것과 비슷한 것을하고 싶다고 생각하면 잊어 버리십시오. C 에서처럼 작동하지 않습니다. 런타임 중에는 사용할 수있는 유형 정보가 없습니다. –