gpt4 book ai didi

c++ - 根据编译时常量,使用相同的标识符 #define'd 或 typedef' 是否被认为是可接受的做法?

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:03 24 4
gpt4 key购买 nike

英特尔数学核心函数库在头文件中包含这段代码:

#ifndef MKL_Complex16
typedef
struct _MKL_Complex16 {
double real;
double imag;
} MKL_Complex16;
#endif

描述here并讨论了here , 这个结构定义可以被用户通过写覆盖

#define MKL_Complex16 std::complex<double>

在包含头文件之前。有了这条线,MKL_Complex16#define 'd,这意味着字符串只是被替换为文字字符std::complex<double>到处。如果不是,则为 typedef 'ed,它为编译器提供了更多信息。

这被认为是可接受的做法吗?我想一定是,因为它是由英特尔实现的。但是我在尝试调试一些代码时发现它非常困惑。

最佳答案

这看起来很疯狂。我非常不愿意通过构建环境传递实际代码。如果有的话,使用更高级别的标志:

#ifndef HAVE_STD_COMPLEX
struct MKL_Complex16 { double real; double img; };
#else
# include <complex>
typedef std::complex<double> MKL_Complex16;
#endif

关于c++ - 根据编译时常量,使用相同的标识符 #define'd 或 typedef' 是否被认为是可接受的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8841089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com