前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C/C++黑魔法-枚举骇客

C/C++黑魔法-枚举骇客

作者头像
Qt君
发布2019-07-15 17:50:09
3570
发布2019-07-15 17:50:09
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

枚举的奇淫技巧! 枚举特性中: 枚举必须在编译时建立其所有值,并且其值可用于常量表达式。

1 在旧的编译器中以下代码不能编译通过

static const int length = 100;int i[length];

2 利用枚举间接实现

struct Body {    enum { length = 100 };    int i[length];};

3 枚举骇客的由来

  • staticconst不被编译器作常量支持,这一点令人费解。
  • 在编译器中不能被支持,利用枚举的特性来支持;
  • 枚举特性中: 枚举必须在编译时建立其所有值,并且其值可用于常量表达式。

4 例子

#include <iostream>
using namespace std;

struct Body {
    enum { length = 100 };
    int i[length];
};

int main() 
{
    cout << "sizeof(Body) = " << sizeof(Body)
         << "sizeof(int[100]) = " << sizeof(int[100]) << endl;

    return 0;
}

5 最后

  • 猜猜结果输出是什么?
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 在旧的编译器中以下代码不能编译通过
  • 2 利用枚举间接实现
  • 3 枚举骇客的由来
  • 4 例子
  • 5 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档