繁体   English   中英

预处理器#if数组

[英]Preprocessor #if Array

我正在处理大量代码,并且希望在参数文件中进行一些计算,因此我使用的是预处理程序语言。

所以

const D_REAL spher2car[3] = { 
    sin(theta)*cos(phi),  
    sin(theta)*sin(phi),
    cos(theta)
}; 

const D_REAL spher2car2[3] = { 
    spher2car[0]+h0*sin(thetap)*cos(phip),
    spher2car[1]+h0*sin(thetap)*sin(phip),
    spher2car[2]+h0*cos(thetap)
}; 

#if (spher2car[2]<spher2car2[2]) 

给我错误

 the token "[" is not valid in preprocessor expressions

因此,基本上,我必须设置一个不再更改的值,但是该值是程序启动之前其他常量参数的依赖。

我该怎么做?

预处理器甚至在编译器之前运行。 您所拥有的只能在运行时进行评估。 因此,请使用常规的if语句:

if (spher2car[2]<spher2car2[2]) {
    // do something
} else {
    // do something else
}

请注意,因为这是必须驻留在函数内部的可执行代码。 上面的变量声明也是如此,因为必须对表达式进行求值以初始化它们。

一个好地方,做到这一点是在main ,你做任何事情之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM