【发布时间】:2011-05-13 03:37:08
【问题描述】:
我正在使用两台计算机,每台计算机都有不同版本的 Visual Studio。在 Visual Studio 2008 计算机上,我的代码可以编译。在可视化 2010 计算机上,我的代码无法编译,因为我使用的是宏 max(a,b),据我所知,它在 stdlib.h 中定义。我不能只定义max(a,b),因为它会在visual 2008 计算机上重新定义。但是,如果我不定义 max(a,b),我的代码将无法在 Visual 2010 计算机上编译。
有什么办法吗?
【问题讨论】:
-
除了接受的答案中讨论的可移植性问题之外,我很好奇为什么您在使用
max()宏从 VS2008 移动到 VS2010 时遇到问题。max()在 VS2010 的stdlib.h中定义与在 VS2008 中的定义方式相同(有一些选项会关闭定义,但在两个编译器中它们是相同的)。换句话说,不仅仅是从 VS2008 迁移到 VS2010(在stdlib.h中定义的max()不符合标准)给您造成了这个问题。 -
在我的 Visual C 中,stdlib.h 定义了
__min和__max。 -
在 Visual Studio 2015 中,最小值和最大值仍在 stdlib.h 中定义...
标签: c visual-studio macros max std