C中的types操作符
C是typeof,真的是一个操作符?
我在想,因为C中没有多态,在运行时没有任何事情要做。 也就是说,typeof的答案在编译时是已知的。 (我想不出在编译时就不知道的typeof的用法)。所以它似乎更像是编译时指令,而不是运算符。
typeof使用任何(处理器)运行时(在GCC中)?
由于typeof
是一个编译器扩展,所以对它没有真正的定义,但是在C的传统中它将是一个运算符,例如sizeof
和_Alignof
也被看作是一个运算符。
而你错了,C有dynamictypes,只能在运行时确定:variables修改(VM)types。
size_t n = strtoull(argv[1], 0, 0); double A[n][n]; typeof(A) B;
只能在运行时确定。
这是一个GNU扩展。 简而言之,这是一种方便的方式来声明与另一个types相同的对象。 例如:
int x; /* Plain old int variable. */ typeof(x) y; /* Same type as x. Plain old int variable. */
它完全在编译时工作 ,主要用于macros。 一个依赖于typeof
的macros的例子是container_of
。
这是来自GCC编译器的C扩展,请参阅http://gcc.gnu.org/onlinedocs/gcc/Typeof.html
这不完全是一个运营商,而是一个关键字。 不,它不会执行任何运行时的魔法。