Привет всем еще раз.
Можно ли узнать размер какого-либо элемента из enum?
Например:
enum SOME_ENUM { some_element[128], any_element[64] }
как узнать размеры some_element и any_element?
Вид для печати
Привет всем еще раз.
Можно ли узнать размер какого-либо элемента из enum?
Например:
enum SOME_ENUM { some_element[128], any_element[64] }
как узнать размеры some_element и any_element?
?PHP код:
printf("%d, %d", sizeof SOME_ENUM:some_element, sizeof SOME_ENUM:any_element);
[ ERROR ] Line 11: invalid symbol name "SOME_ENUM"
[WARNING] Line 11: expression has no effect
[ ERROR ] Line 11: invalid symbol name "SOME_ENUM"
[WARNING] Line 11: expression has no effect
[ ERROR ] Line 11: expected token: ";", but found ")"
[ FATAL ] Line 11: too many error messages on one line
[ ERROR ] Line 9: invalid symbol name "_"
[WARNING] Line 9: expression has no effect
[ ERROR ] Line 9: invalid symbol name "_"
[WARNING] Line 9: expression has no effect
[ ERROR ] Line 9: expected token: ";", but found ")"
[ FATAL ] Line 9: too many error messages on one line
enum SomeEnum { FirstConst[100], SecondConst[150] // other constants.. }; new someVar[SomeEnum]; main() { // output: 100, 150 }
В данном случае, у тебя в энуме находятся константы, а константа не может иметь размера. Поэтому, юзай вариант от totes.bild.
Так же, если что, вычислить "размер" члена перечисления можно так:
Хотя не знаю где конкретно этот метод может пригодиться в коде.
Такой подход сработает только если знаешь, в каком порядке расположены элементы перечисления. Если же, к прмеру, добавить в конце SOME_ENUM новый элемент, то вычисление размера для any_element сломается.
В целом, согласен с вариантом totes.bild, с той лишь оговоркой, что массив someVar стоило объявить с помощью ключевого слова stock, чтобы избежать варнинга, если этот массив больше нигде не используется (да, компилятор не считает sizeof(someVar) за использование массива).