如何导入c+中的所有#include+;? 我正在编写一个C++程序,我试图导入代码>包含< /代码>。 但我试过的都没用。我想我可能对Python的{module}import*函数的有点困惑

如何导入c+中的所有#include+;? 我正在编写一个C++程序,我试图导入代码>包含< /代码>。 但我试过的都没用。我想我可能对Python的{module}import*函数的有点困惑,c++,C++,这是我的密码: #include <*> using namespace std; int main() { cout << Hello! << endl; return 0 } 这就是我得到的错误 Microsoft Windows [Version 10.0.16299.309] (c) 2017 Microsoft Corporation. All rights reserved. C:\Users\thoma>cd Des

这是我的密码:

#include <*>

using namespace std;

int main()
{
    cout << Hello! << endl;
    return 0
}
这就是我得到的错误

Microsoft Windows [Version 10.0.16299.309]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\thoma>cd Desktop

C:\Users\thoma\Desktop>c++ test.cpp -o test.exe
test.cpp:1:13: fatal error: c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\*: Invalid argument
 #include <*>
             ^
compilation terminated.

C:\Users\thoma\Desktop>
Microsoft Windows[版本10.0.16299.309]
(c) 2017年微软公司。版权所有。
C:\Users\thoma>cd桌面
C:\Users\thoma\Desktop>C++test.cpp-o test.exe
test.cpp:1:13:致命错误:c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\*:参数无效
#包括
^
编译终止。
C:\Users\thoma\Desktop>
我的编译器是MinGW。任何帮助或答案都将是非常值得赞赏的。

< P> <代码>包含不是C++,并且没有可比的特性使用。必须明确指定所需的每个标头。这是一件好事。习惯它


您还应该摆脱使用名称空间std的

是的,你在这里感到困惑。有了#include,你真的包括了一个文件。也就是说,编译器获取文件内容,然后放入和#include语句的位置。代码中的每个include都会扩展文件。这意味着编译器还有更多的工作要做。如果你想包含编译器提供的所有文件,那将是一个很大的挑战。C++包含的系统是Python模块系统的一部分。所以你必须包括那些你真正想要的文件。您可以做的是,您可以制作一个头文件,在其中放置您经常需要的包含,然后您只包含这个头文件。然后,编译器将包含您在其中包含的文件。例如:

// includes.hpp
#pragma once
#include <iostream>
#include <string>
#include <vector>
// ...
//includes.hpp
#布拉格语一次
#包括
#包括
#包括
// ...
下面是您可以如何使用它:

// main.cpp
#include "includes.hpp"

int main(int argc, char **argv) {
    std::string some_text = "Hello there";
    std::cout << some_text << std::endl;
    return 0;
}
//main.cpp
#包括“包括.hpp”
int main(int argc,字符**argv){
std::string some_text=“你好”;
标准::cout
  • C++不是Python

    你是指从模块导入*/CODE >中的Python的代码>吗?因为这与你建议的C++版本(如果它存在,它没有),而且无论如何

  • 不同。
  • 头文件不是模块

    C++并没有真正的模块。你们可以组织你们的目录结构,把系统构建成逻辑模块,但你们必须自己去做

    但是,include指令本身是一个文本操作:它只是将命名文件的内容粘贴到指令的位置。没有模块作用域,只是…在那里

  • > p>如果您建议的语法确实有效(也不,它不包括),它将包含所有文件。不是所有.h文件,而是……所有的东西。没有C++所需的文件名扩展(我见过.h,.Hpp,.cxx,.cp,.cxx和c,以及一些比较少见的)。因此通配符上没有隐式过滤器。< /p>
    你不能这样做。<代码>包含了你需要分开的每个代码头。这是非常糟糕的练习。C++是“你不为你不使用的东西付费”,所以不要期望任何类似的东西都是可能的;“<代码>查找/类型F -名字”*'.h '-O-No.*Hp 'sE-e(s\/\(*)\)包含/>master_header.h
    玩得开心。至少对于基于G++的编译器,你迟早会发现如何做到这一点。不要使用它。它会破坏代码的可移植性,降低编译速度(这很有趣,因为如果你将其用于预期目的,它会加快编译速度)并向代码中添加数万个标识符。将
    使用命名空间std;
    添加到其中,您就有了一个雷区,需要涉过并调试。这并不有趣。同意第一句话,但关于删除
    使用命名空间std;
    的包含的第二句话将立即导致OP代码中的其他编译失败。Decid使用
    指令或完全限定的名称空间使用更受本地编码规则和/或名称概率的指导collision@sandwood:当然,这会导致编译失败。OP希望能够理解它们并修复代码,如果没有,请询问更多详细信息。鉴于问题本身,这一点非常明显如果,OP使用“using namespace std”没有充分的理由。
    // main.cpp
    #include "includes.hpp"
    
    int main(int argc, char **argv) {
        std::string some_text = "Hello there";
        std::cout << some_text << std::endl;
        return 0;
    }