【问题标题】:sizeof(void*) and sizeof(function_type_ptr*) equalitysizeof(void*) 和 sizeof(function_type_ptr*) 相等
【发布时间】:2010-02-07 00:20:20
【问题描述】:

sizeof(void*) 和 sizeof(function_type_ptr*) 相等

sizeof(void*) 和 sizeof(function_type_ptr*) 必须相等吗?是C(C90,C99)标准要求的吗?

function_type_ptr 是指向函数的指针。

这个问题是关于标准要求,而不是你自己的意见。请提供标准中的链接、章节编号和引用

【问题讨论】:

  • 这是陈述还是问题
  • 关于C语言标准及其解释的问题。
  • 嗯。 “胖指针”呢?它们在“J. L. Steffen。向可移植 C 编译器添加运行时检查。软件–实践和经验,22(4):305–316, 1992”中介绍。以及“T. M. Austin、S. E. Breach 和 G. S. Sohi。有效检测所有指针和数组访问错误。在 SIGPLAN 的第 94 届编程语言设计和实现会议论文集上,1994 年。”

标签: c standards sizeof c99


【解决方案1】:

答案是否定的。

6.2.6.1/2:除了位域,对象由一个或多个字节的连续序列组成,其数量、顺序和编码要么明确指定,要么由实现定义。

没有为函数/空指针做这样的规范。

【讨论】:

  • 标准是否规定指向不同类型的指针不同并且可以具有不兼容的表示?
  • 是的,它是这么说的,除了少数情况。见6.2.5/27
  • 对不起,我只有“新C标准。经济和文化评论”形式的标准。本书使用全球行号。所以,请在这里引用 6.2.5/27
  • 我不能引用它,它太多了。请在草稿中看到自己:open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
【解决方案2】:

根据this post 的答案是否定的,不能保证即使sizeof(int*) 与sizeof(double*) 相同。

【讨论】:

  • 您能否提供标准及其定义部分的链接?
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 2021-12-04
  • 1970-01-01
  • 2014-05-25
  • 2021-12-06
  • 2013-09-19
  • 1970-01-01
相关资源
最近更新 更多