c++ - 将比较运算符与宏结合使用时出错

标签 c++ macros c-preprocessor compiler-warnings

  • 我有两个闭合和打开的二维数组
  • 我定义了 2 个宏 min(a,b) 和 max(a,b) 为

    #define min(a,b) (a<b?a:b)
    #define max(a,b) (a>b?a:b)
    

我在我的代码中使用了如下表达式:

max( close[i-1][ii], open[i-1][ii] ) < max( close[i-2][ii], open[i-2][ii] )

但是,这会返回以下警告:

warning: comparisons like X<=Y<=Z do not have their mathematical meaning

我相信预处理器正在做某种事情 a<b<c 替换可能解释编译器的警告。我该如何解决这个问题?

最佳答案

改用 std::max 和 std::min

您的宏会以您使用它们的方式产生副作用。

关于c++ - 将比较运算符与宏结合使用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074824/

相关文章:

c++ - 在 C++ 中取消引用 char 指针的问题

macros - 将宏的参数字符串化为 unicode

gcc - 如何在预处理器中仅获取文件名?

Objective-C:类似函数的宏与。方法

xcode - XCode 中的语法感知选择?

c - 有没有办法提供一个宏函数来返回不同类型的值,包括什么都没有?

c# - 避免预处理器相关代码的 "Unreachable code"警告

c++ - 虚拟调度实现细节

c++ - 如何在 Linux 中监视子进程状态

c++ - 创建一个新的基 CDialogEx 派生类