This question already has answers here:
Closed 6 years ago.
Why is the size of a function in C always 1 byte?
(4个答案)
当我需要查找函数类型长度时,我常常使用sizeof()来完成。
预期的结果是4字节和8字节,但是现在,通过GCC得到的结果是1字节。
为什么输出是1字节,而不是4字节和8字节?
#include <stdio.h>

int foo ();
double bar ();

int
main (void)
{
    printf ("int foo () %lu\n", sizeof (foo));
    printf ("double bar () %lu\n", sizeof (bar));
}

double
bar (void)
{
    return 1.1;
}

int
foo (void)
{
    return 0;
}

最佳答案

尽管标准规定“不应将sizeof运算符应用于具有函数类型的表达式”(§6.5.3.4/1),但在GNU C中,这样做的结果是明确定义的:
在void和函数类型上也允许sizeof,并返回1
~GCC, 6.23 Arithmetic on void- and Function-Pointers
还可以查看:Why is the size of a function in C always 1 byte?

07-26 09:40