Tec*_*rky 2 c++ visual-c++ c++11
下一季度审查优化C++课程的材料.本课程的教授正在为我们的项目属性执行/ WALL和/ WX.我遇到的问题是包括Iostream库会产生超过800个警告.这是我试图运行的代码:
#include "pch.h"
#include <iostream>
int main() {
  std::cout << "Hello World";
  return(0);
}
我收到的一些警告包括:
C4514 'abs': unreferenced inline function has been removed
C4774 'sprintf_s': format string in argument 3 is not a string literal
C4820 'std::basic_ios ...': '7' bytes of padding added after...
在询问Stack之前,我通过电子邮件向教授询问了警告并被告知:
你应该包括iostream
如果您收到100个警告,则包含不需要的标头
有什么我想念的吗?我知道我无法编辑iostream的源文件,因为它不是可移植编码.我环顾四周,看看是否可以明确包含cout,cin等功能.但是,我觉得这不是正确的解决方案.
编辑:
用户请求一个更明确的警告消息的示例,以防其中缺少某些内容.以下是一些:
C415 'abs': referenced inline function has been removed (Project: Hello World) (File: stdlib.h)
C4710 'int sprintf_s(char *const....: function not inlined. (Project: Hello World) (File: stdio.h)
教授通过Visual Studio使用GCC,我们的设置作为预制项目从存储库中提取.
你的教授很简单,错了.
这与"包含不需要的标题"无关(为什么会生成警告?),但是使用了/WALL,这显示了stdlib实现中的一些缺陷!
建议不要使用此开关; 引用詹姆斯·麦克纳利斯(James McNellis)的话,根据上述问题得到了它
/Wall启用许多警告,虽然有时可能有用,但在大多数情况下都没用./Wall在Visual C++中并不意味着与-Wallg ++ 相同(实际上,g ++"有/Wall错误",因为它实际上并没有启用所有警告).在任何情况下,在Visual C++中,所有通常重要且有用的警告都是通过启用的/W4.
我会/W4在Visual Studio(和-Wall -WextraGCC)中使用.
显然我无法帮助你说服你的教授,除了建议说"我在Stack Overflow上问过"并发现这是因为/Wall过于严格并在Visual Studio自己的标题上产生警告.他们建议我们/W4改用.你觉得怎么样?"
确实,你需要#include <iostream>,而且你永远不应该修改提供的标准头文件.另外,不要忘记流式传输'\n'来结束输出线!
| 归档时间: | 
 | 
| 查看次数: | 82 次 | 
| 最近记录: |