在C中是typeof,真的是运营商吗?
我在想,因为C中没有多态,在运行时没有什么可做的.也就是说,typeof的答案在编译时是已知的.(我无法想到在编译时不会知道的typeof的使用.)所以它似乎更像是一个编译时指令,而不是一个运算符.
typeof是否使用任何(处理器)运行时(在GCC中)?
Jen*_*edt 55
由于typeof是编译器扩展,因此没有真正的定义,但在C的传统中,它将是一个运算符,例如sizeof,_Alignof也被视为运算符.
而你错了,C具有仅在运行时确定的动态类型:变量修改(VM)类型.
size_t n = strtoull(argv[1], 0, 0);
double A[n][n];
typeof(A) B;
Run Code Online (Sandbox Code Playgroud)
只能在运行时确定.
cni*_*tar 28
这是一个GNU扩展.简而言之,它是一种方便的方式来声明一个与另一个类型相同的对象.例如:
int x; /* Plain old int variable. */
typeof(x) y; /* Same type as x. Plain old int variable. */
Run Code Online (Sandbox Code Playgroud)
它完全在编译时工作,主要用于宏.一个着名的宏观依赖的例子typeof是container_of.