Я пытаюсь объявить переменную C ++, которая занимает ноль байтов. Он в объединении, и я начал с типа int [0]. Я не знаю, действительно ли это нулевые байты (хотя sizeof (int [0]) было 0). Мне нужен лучший способ объявить 0-байтовый тип, и, надеюсь, тот, который может быть определен как что-то вроде nullType или emptyType. Переменная находится в объединении, поэтому в конце концов память зарезервирована в любом случае. Я попытался void на случай, что это будет работать, но C ++ жаловался. Я использую Ubuntu 10.10, с текущей версией ядра и современным GCC.
Вот союз:
union RandomArgumentTypesFirst
{
uint uintVal;
nullType nullVal;
}
А вот тип определения:
typedef int[0] nullType;
Компилятор говорит это о typedef:
error: variable or field ‘nullVal’ declared voidmake[2]:
Когда я набрал int[0]
, это сработало. Есть предложения?
EDIT:
Как сказал @fefe в комментариях, компилятор может предоставить int[0]
в качестве расширения. На сайте GCC сказано, что компилятор имеет много расширений по умолчанию.