【问题标题】:sizeof operator returns 1bytes for VOID operatorsizeof 运算符为 VOID 运算符返回 1 个字节
【发布时间】:2020-05-16 04:47:23
【问题描述】:

我正在查看 C++ 中的 sizeof 运算符。我遇到了一个意外的语义错误。我读过 void 数据类型没有内存大小。但是,在我的程序中,sizeof 运算符为 void 数据类型返回 1。这怎么可能?

#include<iostream>
int main()
{
     std::cout<<"Void: "<<sizeof(void)<<" bytes\n";
     return 0;
}

我正在使用 CodeBlocks 编写代码,我的操作系统是 Windows 10 x64。

【问题讨论】:

    标签: c++ operators sizeof


    【解决方案1】:

    这是GCC extension

    在 GNU C 中,在指向 void 的指针和指向函数的指针上支持加法和减法运算。这是通过将 void 或函数的大小视为 1 来完成的。

    这样做的结果是 sizeof 也允许在 void 和函数类型上使用,并返回 1。

    如果使用了这些扩展,-Wpointer-arith 选项会请求警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2012-05-29
      相关资源
      最近更新 更多