我收到了来自gcc编译器的警告,显示了const char问题。
如何摆脱警告?
谢谢, 迈克尔
char * str_convert(int op) {
/*returns the string corresponding to an operation opcode. Used for screen output.*/
if(op == PLUS) {
return "plus";
}
else if (op == MULT) {
return "mult";
}
else if (op == SUBS) {
return "subs";
}
else if (op == MOD) {
return "mod";
}
else if (op == ABS) {
return "abs";
}
else if (op == MAX) {
return "max";
}
else if (op == MIN) {
return "min";
}
else {
return NULL;
}
}
答案 0 :(得分:2)
我认为修复是将const
添加到返回类型(以防止修改内容)。
我也将if cascade更改为switch / case,但这与问题无关。
const char * str_convert(int op) {
/*returns the string corresponding to an operation opcode. Used for screen output.*/
switch (op) {
case ABS: return "abs";
case MAX: return "max";
case MIN: return "min";
case MOD: return "mod";
case MULT: return "mult";
case PLUS: return "plus";
case SUBS: return "subs";
default: return NULL;
}
}
答案 1 :(得分:1)
您可能还希望考虑使用模板化的'op'值,因为编译器将替换它将用于在运行时评估的switch语句实现的跳转表,其中编译时评估版本调用N个函数,取决于模板值。
template <int op>
const char * str_convert(void)
{
/*returns the string corresponding to an operation opcode. Used for screen output.*/
switch (op)
{
case ABS: return "abs";
case MAX: return "max";
case MIN: return "min";
case MOD: return "mod";
case MULT: return "mult";
case PLUS: return "plus";
case SUBS: return "subs";
default: return NULL;
}
}