C语言怎样取得枚举型的名字 而不是值

C语言怎样取得枚举型的名字 而不是值,第1张

在C语言中,枚举类型是被当做int或者unsigned int类型来处理的,所以按照C语言规范是没有办法遍历枚举类型的。

不过在一些特殊的情况下,可以实现有条件的遍历。

1 枚举类型必须连续。

由于枚举类型支持如下方式定义:

enum

{

ENUM_0,

ENUM_10 = 10,

ENUM_11

};

这样就会导致枚举类型不连续,这种枚举无法遍历。

2 枚举类型中人为加入起始及结束标记。

enum

{

ENUM_START,

ENUM_0,

ENUM_1,

ENUM_2,

ENUM_END

};

可以看到,在这个枚举类型中,人为加入可ENUM_START, 和ENUM_END。中间的ENUM_0,ENUM_1,ENUM_2才是实际的有效数据。当后续需要增删枚举元素时,也要保证ENUM_START, 和ENUM_END分别为最小和最大值。

满足以上两种条件下,就可以做枚举的遍历了,参考代码如下:

int i;

for(i = ENUM_START+1; i<ENUM_END; i ++)

{

//使用枚举元素。

}

这个循环中,i的值就是所有有效的枚举元素值。

#include <windowsh>

#include <stdioh>

#include <tlhelp32h>

void main()

{

PROCESSENTRY32 ProcessEntry = { 0 };

MODULEENTRY32 ModuleEntry = { 0 };

HANDLE hProcessSnap;

HANDLE hModuleSnap;

ProcessEntrydwSize = sizeof(PROCESSENTRY32);

ModuleEntrydwSize = sizeof(MODULEENTRY32);

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照

BOOL bRet = Process32First(hProcessSnap,&ProcessEntry);// 遍历进程快照,轮流显示每个进程的信息,先获得第一个

while(bRet)

{

printf("\n%s\n",ProcessEntryszExeFile);//输出该进程可执行文件名(包括路径)

Sleep(200);

hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcessEntryth32ProcessID);//循环给每个进程的所有模块拍一个快照

bRet = Module32First(hModuleSnap,&ModuleEntry);// 遍历模块快照,轮流显示每个模块的信息,先获得第一个

while(bRet)

{

printf("\t%s\n",ModuleEntryszExePath);

Sleep(200);

bRet = Module32Next(hModuleSnap,&ModuleEntry);//下一个模块

}

bRet = Process32Next(hProcessSnap,&ProcessEntry);//下一个进程

}

}

如何获取mysql中枚举类型的值

mysql_query("SET NAMES 'utf-8'");

修改成

mysql_query("SET NAMES 'UTF8'");

定义了颜色,当读取字符串时,想获得与之对应的枚举类型的值,可以用下面的代码实行public enum Color{RED = 1,GREEN = 2,BLUE = 3}static void Main(string[] args){string col = "BLUE";Color getType = (Color)EnumParse(typeof(Color),col)

以上就是关于C语言怎样取得枚举型的名字 而不是值全部的内容,包括:C语言怎样取得枚举型的名字 而不是值、C++ 枚举进程句柄,获取句柄名。有例子吗。、如何获取mysql中枚举类型的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9316299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存