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

2020-01-12 17:28发布

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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
t3486784401
1楼-- · 2020-01-12 17:58
C 基础需要复习,#ifndef 后边只能跟标识符,不能有参数列表。正确如下:

  1. #ifndef MAX
  2.     #define MAX(a,b)                (((a) > (b)) ? (a) : (b))
  3. #endif
复制代码

也就定死了你这个宏不能按参数个数重载
wye11083
2楼-- · 2020-01-12 18:56
t3486784401 发表于 2019-6-18 16:29
C 基础需要复习,#ifndef 后边只能跟标识符,不能有参数列表。正确如下:



c++11也不能宏定义重载。。openblas使用了数不清的宏嵌套来切换各种矩阵计算方法。

一周热门 更多>