【发布时间】:2013-09-24 18:09:52
【问题描述】:
当我需要查找函数类型长度时,我用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仅在对象类型上明确定义。 -
使用
-Wpointer-arith编译看看 -
养成使用
-pedantic-errors命令行选项运行GCC的习惯。总是。省略-pedantic-errors,只有你们有非常非常好的理由这样做。 -
@P0W,这是一个很棒的链接——其中一个答案甚至有一个合理的理由说明它为什么会这样工作。