你好, 假设我有以下功能:
#define SIZE 100
double a[SIZE];
double b[SIZE];
double a_function(int index1, int index2)
{
switch(index1)
{
case 1:
return a[1]*a[2]*a[5]*a[3];
case 2:
return a[6]*cos(a[77])*exp(a[95]);
// .............. MUCH MORE CASES
// ALWAYS USING ONLY VALUES OF ARRAY a
case 100:
return exp(a[20])*sin(a[21]);
}
}
我想实现以下目标:index2
介于 0 和 SIZE-1
之间,而且我想“替换”每个 a[index2]
通过在每种情况下使用 b[ index2 ]
而无需更改 switch/case-construct。此外,a和b不能被修改,所以它们是只读的!
关于此的简短示例:
a_function(2, index2)
for index2 != {6, 77, 95} -> 返回 a[6]*cos(a[77])*exp(a[95]) ;
a_function(2, 6)
-> 返回 b[6]*cos(a[77])*exp(a[95]);
知道如何做到这一点吗? 也许有一些帮助功能或使用"template"? 非常感谢!
最佳答案
我认为你必须制作一个宏来执行此操作
#define X(n) ((index2==n)?(b[n]):(a[n]))
double a_function(int index1, int index2)
{
switch(index1)
{
case 1:
return X(1)*X(2)*X(5)*X(3);
case 2:
return X(6)*cos(X(77))*exp(X(95));
...
case 100:
return exp(X(20))*sin(X(21));
}
关于c - 在 C 中“动态”使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997933/