пример кода:
main ()
{
printf ("size = %d\n", sizeof (main));
}
Стандарт C запрещает это - при компиляции с gcc -pedantic
он выдает недопустимое применение «sizeof» к предупреждению типа функции
.
Однако gcc
компилирует его и возвращает 1
для sizeof (main)
, и это не размер указателя на функцию.
Похоже, это зависит от компилятора.
ISO C ++ запрещает применение sizeof
к выражению функционального типа.
В ИСО / МЭК 14882 на C ++ сказано (раздел 5.3.3):
«Оператор размера не должен применяться к выражению, имеющему функцию или неполный тип, ...»
То же самое для стандарта C (ИСО / МЭК 9899: 1999) раздел 6.5.3.4:
» Оператор sizeof не должен применяться к выражению, которое имеет тип функции или неполный тип, к заключенному в скобки имени такого типа или в выражение, обозначающее член битового поля. "