代码之家  ›  专栏  ›  技术社区  ›  Sumit Kumar

如何打印任何函数的大小。这是以前问过的,但答案不是粒子吗?[副本]

  •  -3
  • Sumit Kumar  · 技术社区  · 11 年前

    如何打印任何功能的大小?这个问题被问了,但答案不是粒子。 根据前面的回答,这是不同的,当我使用内置函数来查找函数的大小时?

     #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?
     }
    

    ~

    4 回复  |  直到 11 年前
        1
  •  6
  •   Community Mohan Dere    5 年前

    sizeof 函数类型违反了 sizoef 操作员:

    C11§6.5.3.4 sizeof和_Aligef运算符

    这个 大小 运算符不能应用于具有函数类型的表达式 或 不完整类型、此类类型的带括号名称或表达式 指定位字段成员。

        2
  •  5
  •   AnT stands with Russia    11 年前

    函数在内存中通常不作为紧凑的连续区域存在。这就是为什么不可能找到函数的大小。函数没有大小。

        3
  •  0
  •   Jayesh Bhoi    11 年前

    无法保证在运行时确定函数的大小(而且几乎没有理由这样做)。

    函数是文本段(可能是“堆”,也可能不是“堆”)的一部分,或者与您使用的体系结构等效。关于它们的大小,没有经过编译的数据,最多可以从符号表中获取它们的入口点(不必是可用的)。因此,在您将遇到的大多数C环境中,您无法在实践中计算它们的大小。

        4
  •  0
  •   mahendiran.b    11 年前

    生成对象文件,然后使用 objdump -S foo.o 命令查找函数大小。