我一直在做的是使用#define UNC
(不确定性)来打开和关闭计算x
(值)和dx
(不确定性)的功能。它工作得很好,但读或写并不容易。有一个更好的方法吗?在 C++ 中,我可能会使用std::pair
,或者某种元组。我也可以同时使用 structx
和dx
,有时不dx
定义,但我计划在非常大的范围内运行此代码,并且不希望它在关闭后处理所有这些不必要的项目来减慢编译器的速度UNC
。
你们有没有遇到过类似的问题?
这是代码,供参考:
#include <stdio.h>
#define UNC
typedef struct{
double x;
#ifdef UNC
double dx;
#endif
} Foo;
int force(Foo* m, Foo* a, Foo* f){
f->x = m->x * a->x;
#ifdef UNC
f->dx = (f->x)*(m->dx/m->x + a->dx/a->x);
#endif
return 0;
}
int main(){
Foo m; m.x = 3.0;
Foo a; a.x = 2.0;
#ifdef UNC
m.dx = 0.3;
a.dx = 0.2;
#endif
Foo f;
force(&m,&a,&f);
printf(" f is %f \n", f.x);
#ifdef UNC
printf("df is %f \n", f.dx);
#endif
return 0;
}