如何打印任何功能的尺寸?这个问题被问到但答案不是粒子。 根据之前的回答不同,当我使用内置函数来查找函数的大小时?
#include<stdio.h>
void print(void)
{
printf("i m in print \n");
}
int main()
{
printf("%d\n",(int)main-(int)print); // o/p is 20 byte what is this 20
//is size of function?previous asked answer
printf("size=%d\n",sizeof(print));// o/p is 1 byte ? how to get exact plz help?
}
〜
答案 0 :(得分:6)
sizeof
违反了sizoef
运算符的约束:
C11§6.5.3.4sizeof和_Alignof运算符
sizeof
运算符不应用于具有函数类型的表达式或 不完整的类型,这种类型的括号名称,或表达式 指定一个位字段成员。
答案 1 :(得分:5)
函数通常不作为紧凑的连续区域存在于内存中。这就是为什么找不到函数的大小的原因。功能没有大小。
答案 2 :(得分:0)
在运行时没有保证确定函数大小的方法(没有理由这样做)。
函数是文本段的一部分(可能是也可能不是“堆”)或它与您使用的体系结构的等价物。在编辑过程中没有关于其大小的数据,最多可以从符号表中获取它们的入口点(它不必是可用的)。因此,在您遇到的大多数C环境中,您无法在实践中计算其大小。
答案 3 :(得分:0)
生成目标文件,然后使用objdump -S foo.o
命令查找函数大小。