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