MYINT()
может, в зависимости от контекста, может быть истолковано как выражение типа MYINT
или спецификатор определенного типа функции не принимает никаких аргументов и возвращения MYINT
. В некоторых ситуациях, когда справедливо выражение или спецификатор типа, это дает двусмысленность; это разрешается путем интерпретации его как спецификатора типа, если это возможно (EDIT: C++ 03 8.2/2, если вы хотите стандартную ссылку).
sizeof
может принимать либо выражение, либо спецификатор типа в скобках, как аргумент, дающий эту двусмысленность. Итак, здесь MYINT()
интерпретируется как спецификатор типа; то вы получите ошибку, так как sizeof
не может быть применен к типу функции.
EDIT: Вы можете исправить ошибку, удалив скобки, оно будет интерпретировано как выражение (sizeof MYINT()
), добавив дополнительные скобки, это не является допустимым спецификатор типа (sizeof((MYINT()))
), или изменить его на правильный type (sizeof(MYINT)
).
cout << MYINT()
однозначно, поэтому не должно быть ошибок, и действительно, на моем компиляторе нет. Какая ошибка, и каков ваш компилятор?
Вы могли бы показать объявление MYINT? –
Что такое 'MYINT()'? Я бы помог ответить на ваш вопрос. –
Укажите, как определяется макрос MYINT(). Без этого не получается. –