当前位置:  开发笔记 > 编程语言 > 正文

在Visual Studio中定义宏 - /D或#define?

如何解决《在VisualStudio中定义宏-/D或#define?》经验,为你挑选了2个好方法。

最近,当将一些STL代码移植到VS2008时,我想std::copy通过定义新_SCL_SECURE_NO_WARNINGS标志来禁用生成的警告.您可以通过两种方式执行此操作:

使用/ D编译器开关,可以在项目属性中指定.您需要确保为Release和Debug构建定义它,我经常忘记这样做.

通过在包含相关STL标头之前定义宏样式,或者在stdafx.h中定义总体覆盖:

#define _SCL_SECURE_NO_WARNINGS

这两种方法都运行良好但我想知道是否有任何争论支持一方而不是另一方?



1> James Curran..:

当您想要在不同的构建上以不同方式定义它时,通常使用/ D选项(因此可以在makefile中更改它)

如果你"总是"希望它以相同的方式设置,请使用#define.



2> luke..:

通过将它们放在项目文件中,您可以在平台特定警告和平台之间保持紧密关联,这对我来说似乎是正确的.

如果他们在代码中,他们总是在代码中,无论它是否适合该平台.对于GCC或可能的Visual C++未来版本,您不需要它.另一方面,通过在代码中使用它,更明显的是它就在那里.如果您移动(复制)代码,则更容易记住使用它移动该定义.

各方面的优点和缺点.因人而异.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有