neutronlmk 发表于 2019-6-18 16:08:24

请教,带参数宏定义使用#ifndef预防重复编译出错

比如这个代码:
#ifndef MAX(a,b)
    #define MAX(a,b)                (((a) > (b)) ? (a) : (b))
#endif编译器报: newline expected, extra characters found
如何操作?


t3486784401 发表于 2019-6-18 16:29:35

C 基础需要复习,#ifndef 后边只能跟标识符,不能有参数列表。正确如下:

#ifndef MAX
    #define MAX(a,b)                (((a) > (b)) ? (a) : (b))
#endif

也就定死了你这个宏不能按参数个数重载

wye11083 发表于 2019-6-18 22:10:25

t3486784401 发表于 2019-6-18 16:29
C 基础需要复习,#ifndef 后边只能跟标识符,不能有参数列表。正确如下:




c++11也不能宏定义重载。。openblas使用了数不清的宏嵌套来切换各种矩阵计算方法。
页: [1]
查看完整版本: 请教,带参数宏定义使用#ifndef预防重复编译出错