Недавно я натолкнулся на некоторый код, который выглядел так:
if(sizeof(var,2) == 4) { ... }
(где var
- тип)
Я был очень удивлен, увидев два аргумента для оператора sizeof
. Быстрое сканирование стандарта ISO/ANSI C99 не дало никаких секретов. Я не мог придумать какое-либо чтение грамматики, которая допускала бы запятую.
Поиск кода Google, я смог найти пример этого синтаксиса в некотором коде PPC.
Это какой-то специфичный для PPC синтаксис? Что это значит?
EDIT: Оказывается, что и то, на что я смотрел - так и связанный код, - это синтаксис, специфичный для Компилятор WindRiver Diab:
sizeof (тип, int-const):
Если int-const 0 sizeof возвращает размер в байтах типа.
Если int-const 1 sizeof возвращает выравнивание типа.
Если int-const 2 sizeof возвращает целочисленную константу, обозначающую тип типа. Посмотрите "оператор sizeof" в Руководство пользователя Diab C/С++ для значений.
Ничего себе, они действительно перегрузили значение оператора sizeof
.
EDIT2: Полная документация находится здесь: http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432