您的位置:首页 > 其它

VC语法 enum { IDD = IDD_ABOUTBOX };分析

2008-10-31 15:57 239 查看
VC语法 enum { IDD = IDD_ABOUTBOX };分析

2008年10月31日 flyfish

利用MFC向导生成一个Dialog程序

#define IDD_ABOUTBOX 100

IDD_ABOUTBOX是对话框资源的ID

enum { IDD = IDD_XX_DIALOG };
enum { IDD = IDD_ABOUTBOX };

我将上述代码enum { IDD = IDD_ABOUTBOX };改成const static int IDD= IDD_ABOUTBOX;
可以通过编译并且运行正常,也没发现有什么异常.
又将enum { IDD = IDD_XX_DIALOG };改成const static int IDD = IDD_XX_DIALOG;也没发现有什么异常.
但不知道为什么这样写?

说下enum;
enum week{Sunday,Monday,Tuesday,Wednesday}

枚举变量中的枚举元素是按照常量来处理的,不能普通的赋值,可以在声明的时候进行赋值如
enum week{Sunday=1,Monday,Tuesday,Wednesday}
下一个元素会自动加一操作

#include <iostream>
using namespace std;
int main()
{
enum week{Sunday=1,Monday,Tuesday,Wednesday};

week my=Monday;
cout<<my;
return 0;
}

打印出2

#include <iostream>
using namespace std;
int main()
{
enum week{Sunday=1,Monday,Tuesday,Wednesday};
enum year{Sunday};
week my=Monday;
cout<<my;
}

这样编写是无法通过编译的,提示'Sunday' : redefinition; previous definition was 'enumerator' Sunday 已经定义了.

为什么没有通过编译?
这就是枚举的作用域的问题,就好像在同一个作用域定义了相同的变量.
int a;
int a;
当然是通过不了编译的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: