相关疑难解决方法(0)

我为什么不#include <bits/stdc ++.h>?

我在我的代码中发布了一个问题,其唯一的#include指令如下:

#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)

我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.

为什么?

c++ portability c++-faq turbo-c++ implementation-defined-behavior

215
推荐指数
6
解决办法
2万
查看次数

C++模块 - 为什么它们从C++ 0x中删除?他们以后会回来吗?

我刚刚发现关于C++ 0x中模块的旧C++ 0x草案.

我们的想法是通过只编写.cpp文件退出当前的.h/.cpp系统,然后在编译过程中生成模块文件,然后由其他.cpp文件使用.

这看起来非常棒.

但我的问题是:为什么他们从C++ 0x删除它?是因为太多的技术难题?时间不够?你是否认为他们会考虑使用它来获得一个不可思议的C++版本?

c++ standards module language-extension c++11

110
推荐指数
3
解决办法
3万
查看次数

为什么不总是包括所有标准标题?

我正在阅读Herb Sutter More Exceptional C++关于前瞻性声明的第37项说:

#include当前瞻声明足够时,永远不要头.宁愿#include<iosfwd>当不需要流的完整定义.

另外,我听到很多关于仅包含编译单元所需的头以减少依赖性的建议.

我完全理解为什么这应该适用于项目标题,但我不太明白为什么包含不必要的标准标题是不好的.

例如,我做这样的事情:

//standard_library.h

#ifndef STANDARD_LIBRARY
#define STANDARD_LIBRARY

#include <iostream>
#include <chrono>
#include <thread>
...
// Everything I need in the project
#endif
Run Code Online (Sandbox Code Playgroud)

并在任何地方包含这个单一的标题,我需要的东西 std

我能想到的问题是:

  1. C库函数对名称空间的污染不需要在std名称空间中.
  2. 编译时间较慢

但我没有遇到过1. sofar的重大问题.几乎所有东西都在std命名空间中.我也不完全理解为什么2.必然是一个重大问题.标准标题很少改变.另据我所知,编译器可以预编译它们.当涉及到模板时,它们只在我需要时才被实例化(编译).

还有一些好处:

  1. 减少打字
  2. 少阅读
  3. 少弄清楚我需要哪些标题以及某个函数的标题

我是一个没有大型项目经验的初学者,我真的很想弄明白,所以请怜悯我.

c++ coding-style

28
推荐指数
1
解决办法
3483
查看次数