что возвращает sizeof (имя функции)?

пример кода:

main ()
{
printf ("size = %d\n", sizeof (main));
}
25
задан Yacoby 19 April 2010 в 10:06
поделиться

2 ответа

Стандарт C запрещает это - при компиляции с gcc -pedantic он выдает недопустимое применение «sizeof» к предупреждению типа функции .

Однако gcc компилирует его и возвращает 1 для sizeof (main) , и это не размер указателя на функцию.

Похоже, это зависит от компилятора.

14
ответ дан 28 November 2019 в 21:46
поделиться

ISO C ++ запрещает применение sizeof к выражению функционального типа.

В ИСО / МЭК 14882 на C ++ сказано (раздел 5.3.3):

«Оператор размера не должен применяться к выражению, имеющему функцию или неполный тип, ...»

То же самое для стандарта C (ИСО / МЭК 9899: 1999) раздел 6.5.3.4:

» Оператор sizeof не должен применяться к выражению, которое имеет тип функции или неполный тип, к заключенному в скобки имени такого типа или в выражение, обозначающее член битового поля. "

5
ответ дан 28 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: