我正在学习 Bjarne Stroustrup 的书“使用 C++ 编程原理和实践”。我从这里下载了他的头文件,并在 Windows 上的 VSCode 中使用了以下编译命令:
g++ -Wall -Wextra -Wconversion -pedantic -std=c++17 -g -c main.c
编译器抛出了一堆错误:
std_lib_facilities.h: In member function 'char& String::operator[](unsigned int)':
std_lib_facilities.h:114:8: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
if (i<0||size()<=i) throw Range_error(i);
~^~
std_lib_facilities.h: In member function 'const char& String::operator[](unsigned int) const':
std_lib_facilities.h:120:8: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
if (i<0||size()<=i) throw Range_error(i);
~^~
std_lib_facilities.h: At global scope:
std_lib_facilities.h:222:2: warning: extra ';' [-Wpedantic]
};
我的问题是:
- 删除第 222 行的分号是否正确?有问题的代码:
default_random_engine& get_rand()
{
static default_random_engine ran;
return ran;
};
- 什么是可能的解决方法
unsigned expression < 0 is always false
? - 将来使用 g++ (mingw64) 应该注意什么?如果可能的话,有哪些资源可以学习如何有效地使用 g++ 编译器?
要编译的代码只是一个简单的hello world。谢谢