我有以下声明:
#define ERROR 0x01
..
UINT32 res=ERROR;
仅给出变量res
,是否可以将字符串复制"ERROR"
到char数组中?
澄清:
也许我还不够清楚。我正在调用返回值的DLL。这些值可以这样解释:
switch (res)
{
case ERROR:
strcpy(arr, "ERROR");break;
case ...
}
由于有很多选择,而且选择switch
会很大,所以我徘徊了也许有捷径...
#define ERROR 0x01
定义常量整数文字,0x01
并且预处理程序将以下行变为:
UINT32 res = ERROR;
进入:
UINT32 res = 0x01;
在编译开始之前。没有char数组。
如果要复制常量的关联名称,以避免执行以下操作:
case ERROR:
strcpy(arr, "ERROR"); break;
case X:
strcpy(arr, "X"); break;
case Y:
strcpy(arr, "Y"); break;
...
那么您可以使用给定的代码创建一个具有静态结构来检索名称的帮助程序,但是出于类型安全的考虑,我将#define
尽可能避免s。有点像(这只是一个概念):
const char* getRetCodeName(const UINT32 code) {
static std::map<int, const char*> codes;
static int firstCall = 1;
if (firstCall) {
codes[ERROR] = "ERROR";
codes[X] = "X";
codes[Y] = "Y";
firstCall = 0;
}
return codes[code];
}
并在呼叫者的代码中:
UINT32 res = someCall();
const char* retCodeName = getRetCodeName(res);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句