我正在制作一个C ++程序,我试图用import *
导入所有程序。
但我尝试的并没有奏效。我想我可能会对Python的#include <*>
using namespace std;
int main()
{
cout << Hello! << endl;
return 0
}
函数感到困惑。
这是我的代码:
c++ test.cpp -o test.exe
然后,我打开了cmd并键入:
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>
这就是我得到的错误......
{{1}}
我的编译器是MinGW。任何帮助或答案将不胜感激。
答案 0 :(得分:12)
#include <*>
不是C ++,也没有类似的功能可供使用。您必须明确指定所需的每个标头。这是好的事情。习惯它。
你也应该摆脱using namespace std;
。
答案 1 :(得分:8)
C ++不是Python。
你的意思是Python的from module import *
?因为这与你建议的C ++版本会有什么不同(如果它存在,它没有),无论如何
头文件不是模块。
C ++并没有真正的模块。您可以组织目录结构并将系统构建到逻辑模块中,但您必须自己完成。
include指令本身是一个文本操作:它只是粘贴指定文件的内容来代替指令。没有模块范围,它只是...... 那里。
如果您建议的语法确实有效(同样,它没有) - 它将包含所有文件。不是所有的.h文件,只是......一切。 C ++没有必要的文件扩展名(我已经看过.h,.hpp,.hxx,.cpp,.cxx和.C以及一些罕见的文件扩展名)所以没有隐式过滤器在通配符上。
答案 2 :(得分:5)
// 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;
}
另请注意,请勿在头文件中使用namespace。包含此标头的每个标头也将使用命名空间语句来获取此标头。这可能会在将来产生问题。我也不在代码文件中使用它。您可以在命名空间的特定部分上使用。但这是另一个话题。也许只是google for 使用命名空间问题。
这里重要的是说。即使您使用此类包含标题保存了一些工作。请注意使用它们。就像我说的,包括真正复制文本,所以你的编译器有更多的待办事项。因此,您的编译时间会增加。在某些情况下,这是一个很好的解决方案,但大多数情况下,最好包含您真正需要的部件。在许多情况下,您甚至不需要包含标头,但您可以使用前向声明。试着为将来记住这一点。