我正在开发一种算法,我需要根据输入变量将一个向量定义为实数或复数。伪就像
void foo(bool is_real)
{
if (is_real)
{
vector< double > v;
}
else vector< complex > v;
}
现在我正在编写两个不同版本的算法,如果 is_real 为真,我将算法用于真实情况,否则,使用复杂情况。实际上,除了数据类型之外,这两种算法都是完全相同的。所以我用谷歌搜索
#if is_real
vector< double > v;
#else
vector< complex > v;
#endif
但是这段代码无法编译。我正在使用 linux gnu c++ 4.7.2。我想知道该宏是否仅适用于 microsoft c++?我觉得不舒服,因为在我的实现中唯一的区别是数据类型,有没有办法选择在运行时应该使用什么类型?谢谢。