VS2017 Community中GoogleTest相关C4996警告抑制失败,报D8004错误求助
解决VS2017中GoogleTest的C4996警告抑制问题
嘿,我之前在VS2017里用GoogleTest的时候也踩过这个警告的坑!你遇到的D8004: '/wd' requires an argument错误,核心原因是在项目属性的「抑制特定警告」输入框里多写了命令行前缀/wd——这个输入框本身会自动为每个警告编号加上/wd前缀,所以你只需要填纯数字的警告编号就行。
正确的操作步骤
- 右键你的项目 → 选择「属性」
- 依次展开「配置属性」→「C/C++」→「高级」
- 在「抑制特定警告」输入框中,直接填写:
4996- 如果需要同时抑制多个警告,用分号分隔编号,比如
4996;1234
- 如果需要同时抑制多个警告,用分号分隔编号,比如
- 点击「应用」→「确定」,重新编译即可
更精准的替代方案
如果不想全局抑制所有C4996警告(毕竟C4996还可能包含其他不安全函数的提示),你可以直接按照警告提示里说的,定义宏来只消除这个TR1命名空间的弃用警告:
- 同样在项目属性里,展开「配置属性」→「C/C++」→「预处理器」
- 在「预处理器定义」中添加:
_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING - 应用后编译,就能精准屏蔽这个特定的STL警告了
之前你尝试的/wd4996、C4996带前缀的写法,都会导致VS解析命令行时出错——输入框里的内容会被拼接到/wd后面,变成/wd/wd4996这种无效参数,自然就报D8004错误啦。
内容的提问来源于stack exchange,提问作者Weeedooo
相关产品推荐
相关产品推荐

