代码之家  ›  专栏  ›  技术社区  ›  Julian Gold

Visual Studio C++和max宏

  •  0
  • Julian Gold  · 技术社区  · 6 年前

    在我们的代码库的某个地方,有一个包含文件——可能是系统包含——它本身就包含了定义遗留C max符号的系统文件:

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

    是的,宏很可怕。不是我的马戏团等等。问题是我们的一些源代码使用

    #include <limits>
    
    int x = std::numeric_limits<int>::max();
    

    但此时,预处理器使用上述宏来文本替换该函数调用,显然编译失败。所以我们必须

     #undef max
    

    在代码块的开头附近,这也很可怕。有没有一种方法可以找出哪个包含文件包含定义最大宏的文件(包括文件…)?或者有更好的方法来处理这个问题吗?

    0 回复  |  直到 6 年前