我正在尝试声明一个占用零字节的C++变量.它在一个联合中,我以int [0]的类型开始.我不知道这是否实际上是零字节(虽然sizeof(int [0])是0).我需要一种更好的方法来声明一个0字节类型,并希望可以将其类型化为nullType或emptyType.变量在一个联合中,所以无论如何最终都会保留内存.我尝试了无效的机会,但是C++抱怨道.我正在使用Ubuntu 10.10,包含当前版本的内核,以及最新的GCC.这是联盟:
union RandomArgumentTypesFirst
{
uint uintVal;
nullType nullVal;
}
Run Code Online (Sandbox Code Playgroud)
这是typedef:
typedef int[0] nullType;
Run Code Online (Sandbox Code Playgroud)
编译器对typedef说了这个:
error: variable or field ‘nullVal’ declared voidmake[2]:
Run Code Online (Sandbox Code Playgroud)
当我输入时int[0],它有效.有什么建议?
编辑:正如@fefe在评论中所说,int[0]可能由编译器作为扩展提供.GCC的网站说默认情况下编译器有很多扩展.