如何使用标志参数进行功能? (C )
发布时间:2020-12-16 05:49:42 所属栏目:百科 来源:网络整理
导读:如何使用像 Windows的CreateWindow(… style | style,…)这样的标志来创建一个函数,例如,一个createnum函数: int CreateNum(flag flags) //???{ int num = 0; if(flags == GREATER_THAN_TEN) num = 11; if(flags == EVEN ((num % 2) == 1) num++; else if(f
如何使用像
Windows的CreateWindow(… style | style,…)这样的标志来创建一个函数,例如,一个createnum函数:
int CreateNum(flag flags) //??? { int num = 0; if(flags == GREATER_THAN_TEN) num = 11; if(flags == EVEN && ((num % 2) == 1) num++; else if(flags == ODD && ((num % 2) == 0) num++; return num; } //called like this int Number = CreateNum(GREATER_THAN_TEN | EVEN); 这是可能的,如果是这样,怎么样? 解决方法
您可以定义一个指定“单位”值的枚举(请注意,封闭结构仅作为命名上下文来执行,以便您可以编写例如MyFlags :: EVEN):
struct MyFlags{ enum Value{ EVEN = 0x01,ODD = 0x02,ANOTHER_FLAG = 0x04,YET_ANOTHER_FLAG = 0x08,SOMETHING_ELSE = 0x10,SOMETHING_COMPLETELY_DIFFERENT = 0x20 }; }; 然后使用它: int CreateNum(MyFlags::Value flags){ if (flags & MyFlags::EVEN){ // do something... } } void main(){ CreateNum((MyFlags::Value)(MyFlags::EVEN | MyFlags::ODD)); } 或者只是这样: int CreateNum(int flags){ if (flags & MyFlags::EVEN){ // do something... } } void main(){ CreateNum(MyFlags::EVEN | MyFlags::ODD); } 您也可以简单地声明整数常量,但是在我看来,枚举更清晰. 注意:我更新了这个帖子来考虑一些意见,谢谢! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |