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


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
using namespace std;
int main()
{
 enum week{Sunday=1,Monday,Tuesday,Wednesday};
 
 week my=Monday;
 cout<return 0;
}

打印出2

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

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

为什么没有通过编译?
这就是枚举的作用域的问题,就好像在同一个作用域定义了相同的变量.
int a;
int a;
当然是通过不了编译的.

你可能感兴趣的:(VC)