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;
当然是通过不了编译的.