Может ли существовать тип C ++, который принимает 0 байтов

Я пытаюсь объявить переменную 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 сказано, что по умолчанию у компилятора много расширений.

7
задан Linuxios 27 January 2012 в 14:52
поделиться