如何打印任何功能的大小.之前有人问过,但答案不是粒子?

Sum*_*mar -3 c sizeof

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

 #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?
 }
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 6

sizeof在函数类型上违反sizoef运算符的约束:

C11§6.5.3.4sizeof和_Alignof运算符

sizeof不应将运算符应用于具有函数类型或不完整类型的表达式,此类型的带括号的名称,或应用于指定位字段成员的表达式.

  • @SumitKumar这是非法代码,无需解释. (2认同)

AnT*_*AnT 5

函数通常不作为紧凑的连续区域存在于存储器中.这就是为什么找不到函数的大小的原因.功能没有大小.

  • @Sumit Kumar:您的代码打印通过实现定义的从函数指针类型到`int`类型的转换获得的两个整数值之间的差异.这是什么意思?我不知道.可能是这两个函数的入口点之间的地址差异(通常不是任何函数的"大小").什么你的`sizeof`我也不知道.在形式上,它甚至没有编译.将`sizeof`应用于函数是违法的.换句话说,代码中没有任何有意义的内容.试图"搞清楚"是浪费时间. (3认同)