宏定义中元素类型的有关问题
宏定义中元素类型的问题
有如下宏:
#define MULTI_FUNCTIONAL(exp, test, result) { \
const double expVal=(exp); \
const double testVal=(test); \
const double resultVal=(result); \
if (resultVal==testVal) ... ... (省略)
结果发现exp, test, result的值不仅仅可以是double类型的,也可以是char, int各种类型的值。怎么定义这里的expVal, testVal和resultVal呢?
请指教一下,谢谢!
------解决方案--------------------
如果是gcc,可以使用typeof(exp) const expVal = (exp);
如果不是gcc,可以使用宏转调inline的template函数自动推导类型。
不要在“宏”上吊死。
有如下宏:
#define MULTI_FUNCTIONAL(exp, test, result) { \
const double expVal=(exp); \
const double testVal=(test); \
const double resultVal=(result); \
if (resultVal==testVal) ... ... (省略)
结果发现exp, test, result的值不仅仅可以是double类型的,也可以是char, int各种类型的值。怎么定义这里的expVal, testVal和resultVal呢?
请指教一下,谢谢!
------解决方案--------------------
如果是gcc,可以使用typeof(exp) const expVal = (exp);
如果不是gcc,可以使用宏转调inline的template函数自动推导类型。
不要在“宏”上吊死。