我编写了如下一段代码:
#include<stdio.h>
int bar() {
printf("bar\n");
return 0;
}
int main() {
printf("%lu\n", sizeof(*bar));
return 0;
}
在debian7-64bit平台用clang3.0-6.2和gcc4.7.2编译运行均输出1,后来我尝试把sizeof(*bar)改成了sizeof(bar),仍然输出了1,但是改成&bar后输出变成了8.
我猜测sizeof(&bar)输出的应该是函数指针的大小所以是8,那么请问前两种写法输出的是什么呢?
标准里规定, sizeof不能用在function type上.
http://en.cppreference.com/w/cpp/language/sizeof
但是gcc做了extension,
https://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html