代码在CLion中编译,但不在命令提示符中编译



我正在尝试一个C++库,并且需要(希望(使用嵌套的名称空间来提高代码的可读性。但是,当我尝试在Windows命令提示符下使用g++ main.c编译代码时,遇到了一个问题。

下面的代码是我将要使用的一个示例——一个嵌套的名称空间,然后是一些函数或类:

namespace gpc::warning {
void raiseError() {
std::cout << "Error...n";
exit(1);
}
}

下面的代码是我的main.c文件的一个示例:

#include <iostream>
#include "Warning/raise.hpp"
int main() {
std::cout << "Hello, World!" << std::endl;
gpc::warning::raiseError();
return 0;
}

当我在CLion中运行这个简单的probram时,它会完美地编译和运行,但当我在Windows 10命令提示符中运行代码时,我会收到以下错误,告诉我一些关于命名空间的信息:

In file included from main.cpp:2:0:
Warning/raise.hpp:10:14: error: expected '{' before '::' token
namespace gpc::warning {
^
Warning/raise.hpp:10:16: error: 'warning' in namespace '::' does not name a type
namespace gpc::warning {
^
main.cpp: In function 'int gpc::main()':
main.cpp:9:10: error: 'gpc::warning' has not been declared
gpc::warning::raiseError();
^
main.cpp: At global scope:
main.cpp:12:1: error: expected '}' at end of input
}
^

我想知道我做错了什么,以及如何解决这个问题。

谢谢!

尝试将g++版本更新为6.1.0或更高版本。

即使有-std=gnu++17标志,代码也不会在g++ v5.5.0上编译。你可以在这里查看。(原因:当时编译器不支持嵌套命名空间。(

代码应在g++ v6.1.0或更高版本上使用编译器默认值(无任何标志(进行编译。你可以在这里查看。

您可以通过在cmd上运行:g++ --version来检查编译器版本。

专业提示:找到CLion的编译器,如果它是g++,则将其添加到路径中。(不需要浪费互联网数据来更新旧的g++编译器!(

相关内容

  • 没有找到相关文章

最新更新