【发布时间】:2013-12-11 11:25:13
【问题描述】:
我必须在 c++ 中调用一个具有不同数据类型的简单函数。例如,
void Test(enum value)
{
int x;
float y; // etc
if(value == INT)
{
// do some operation on x
}
else if(value == float)
{
// do SAME operation on y
}
else if(value == short)
{
// AGAIN SAME operation on short variable
}
.
.
.
}
因此我想消除不同数据类型的重复代码... 所以,我尝试使用宏,根据枚举的值,为不同的数据类型定义相同的变量..但无法区分 MACROS
例如
void Test(enum value)
{
#if INT
typedef int datatype;
#elif FLOAT
typedef float datatype;
.
.
.
#endif
datatype x;
// Do operation on same variable
}
但是现在每次第一个条件#if INT 都为真。 我试图设置不同的宏值来区分但不起作用:(
谁能帮我实现上述目标。
【问题讨论】:
-
你需要
#ifdef吗? -
你不能将你的函数命名为 main。
-
你能说得更具体一点吗:你想通过枚举值切换还是想为不同的 arg 类型编写相同的代码?
-
我们在这里谈论的究竟是什么重复代码(为了更好地理解您的问题)?