函数在编译时能确定占内存的大小吗?

warcao 2012-01-01 08:03:11
因为我sizeof一个函数提示是非法操作,想知道原因,望大家告知。
...全文
170 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamnobody 2012-01-02
  • 打赏
  • 举报
回复
int fun(char x);

int result_value_size = sizeof(fun('i'));
int pointer_to_fun_size = sizeof(&fun);


不能用sizeof求出代码段的长度,那也不是C语言应该做的事.

LinkSe7en 2012-01-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ad136988861 的回复:]

sizeof也是人写的一个函数,他的局限性就在于数据段或者变量,struct
[/Quote]
sizeof 不是函数
叫我小林吧 2012-01-02
  • 打赏
  • 举报
回复
sizeof也是人写的一个函数,他的局限性就在于数据段或者变量,struct
辰岡墨竹 2012-01-02
  • 打赏
  • 举报
回复
用内联汇编可能可以,但是不是标准化的方法,而且不同编译器支持的内联汇编语法也有很大区别
薛定谔之死猫 2012-01-02
  • 打赏
  • 举报
回复
想确定一个函数的大小那只有自己写裸函数,并且函数体都有汇编代码构成,这样通过手工累计的办法可能能得到函数代码的长度~
warcao 2012-01-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 anyidan 的回复:]

引用 2 楼 warcao 的回复:

引用 1 楼 shagpg2008 的回复:

sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。

那代码段的长度应该也是可以确定的吧


那代码段的长度也不能如此确定
sizeof 的 操作数 只能是类型名和变量名

个人理解 编译阶段不一定能确定一个函数的长度,在编译阶段阶段后尚有优化和链接……
[/Quote] 有道理
AnYidan 2012-01-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 warcao 的回复:]

引用 1 楼 shagpg2008 的回复:

sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。

那代码段的长度应该也是可以确定的吧
[/Quote]

那代码段的长度也不能如此确定
sizeof 的 操作数 只能是类型名和变量名

个人理解 编译阶段不一定能确定一个函数的长度,在编译阶段阶段后尚有优化和链接。。。
warcao 2012-01-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shagpg2008 的回复:]

sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。
[/Quote]
那代码段的长度应该也是可以确定的吧
shagpg2008 2012-01-01
  • 打赏
  • 举报
回复
sizeof不是这么用的。只是针对变量。数据段的东西。对于代码段sizeof是没用的。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧