如何在C 中导入所有#include

How to import all #include in c++?

本文关键字:#include 导入      更新时间:2023-10-16

我正在制作一个C 程序,我试图用#include导入所有程序。但是我尝试的东西没有起作用。我想我可能会与Python的from {module} import *功能有些混淆。

这是我的代码:

#include <*>
using namespace std;
int main()
{
    cout << Hello! << endl;
    return 0
}

那么,我打开了CMD并输入:

c++ test.cpp -o test.exe

这是我遇到的错误...

Microsoft Windows [Version 10.0.16299.309]
(c) 2017 Microsoft Corporation. All rights reserved.
C:Usersthoma>cd Desktop
C:UsersthomaDesktop>c++ test.cpp -o test.exe
test.cpp:1:13: fatal error: c:mingwlibgccmingw326.3.0includec++*: Invalid argument
 #include <*>
             ^
compilation terminated.
C:UsersthomaDesktop>

我的编译器是mingw。任何帮助或答案都将不胜感激。

#include <*>不是C ,也没有可比较的功能。您必须明确指定所需的每个标头。这是一个好的东西。习惯了。

您还应该摆脱using namespace std;

  1. c 不是python。

    您是说Python的from module import *吗?因为这与您建议的C 版本不同(如果存在,不存在(,无论如何

  2. 标题文件不是模块。

    C 实际上没有模块。您可以组织您的目录结构并将系统构建到逻辑模块中,但是您必须自己做。

    包括指令本身是一个文本操作:它只是将命名文件的内容粘贴到指令代替指令。没有模块范围,只是... 那里

  3. 如果您建议的语法确实有效(同样,它不行( - 它将包含 all 文件。不是全部.h文件,而只是...一切。C 没有必需的文件名扩展名(我已经看到.h,.hpp,.hxx,.cpp,.cxx和.c以及几个稀有版本(,因此通配符上没有隐含的过滤器。

是的,您在这里感到困惑。使用 #include ,您确实包括一个文件。这意味着,编译器将文件内容拿走,然后放置您的##include-statement 的位置。代码中的每个包含都会扩展您的文件。这意味着编译器有更多的工作。如果您包含所有文件,则您的编译器要提供的内容,那将是很多。C Include-System是Pythons模块系统以外的其他东西。因此,您必须包括您真正想要的那些文件。您可以做的是,您可以将标头文件放置在其中,其中包含这些内容经常需要,然后只包含此标头文件。然后,您的编译器将包括您在其中包含的文件。示例:

// includes.hpp
#pragma once
#include <iostream>
#include <string>
#include <vector>
// ...

这就是您可以使用的方式:

// 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;
}

也请注意,请勿在标头文件中使用名称空间。包括此标头的每个标头还将使用命名空间语句获得此标题。这可能会在将来带来问题。我都不在代码文件中使用它。您可以使用名称空间的特定部分使用。但这是另一个话题。也许只是使用名称空间问题的Google

在这里说什么很重要。即使您保存了一些工作,包括标头。注意它们。就像我说的那样,包括真正的副本文字,因此您的编译器具有更多的托法。因此,您的汇编时间增加了。在某些情况下,这是一个很好的解决方案,但是大多数时候最好包括您真正需要的零件。在许多情况下,您甚至不需要包含标题,但是您会使用前瞻性声明。只需尝试记住将来。