我有一个子例程,它在中间包含一个简单的if语句,我想去掉它。原因是,我预先知道该语句是真是假,这是基于调用发生的位置,而不是基于输入数据。这甚至更有吸引力,因为它是1行代码,如果它真的不做太多事情的话。
现在有一个额外的逻辑输入,它只用于if语句,它被调用了两次-一次使用"false“,一次使用"true”。
本质上,我想让if语句在编译期间工作,但#ifdef不允许同一个子例程有两种不同的用法/配置。
愚蠢的解决方案是完全复制子例程,并使一个实例具有"true“段,而另一个实例仅具有"false”段。
然而,除此之外,这远远不是优雅的(并且有99.9%的相似性),这是一个打开的麻烦,一旦子例程在未来被改变。
我要指出的是,我的意思不是重载子例程(至少不是在“传统”意义上),尽管这是一种相同的一般概念。
所以我的问题是-有没有解决这种情况的方案,或者我将不得不把它作为一个运行时的if语句,并有一个额外的逻辑true/false输入?
我用的是Fortran 90/95。
https://stackoverflow.com/questions/50594188
复制相似问题