gcc 编译器 __SIZE_TYPE__

gcc compiler __SIZE_TYPE__

我对 gcc 编译器预定义的变量 __SIZE_TYPE__ 很好奇。

假设我在 C 中编码如下句子

typedef __SIZE_TYPE__ size_t; 

使用gcc以外的其他C编译器会不会出错? 所有的 C 编译器都有变量 __SIZE_TYPE__ 吗?

是的,只要使用带双下划线的标识符,就可能会出错。参见 C 标准 7.1.3:

All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.

至于 __SIZE_TYPE__ 这显然是一个 gcc 标识符。我不认为任何其他编译器使用它,但不能保证。另一个编译器可以完全自由地使用相同的标识符 ,即使是出于完全不同的目的