Stroustrup의 "std_lib_facilities.h"헤더 파일 (여기에 : http://stroustrup.com/Programming/PPP2code/std_lib_facilities.h)을 macOS Sierra, Sublime Text 3에서 올바르게 컴파일하려고합니다. 빌드 시스템을 통해), Apple LLVM 버전 8.0.0 (clang-800.0.38). 나는 여러 가지 설정을하고 있지만 두 가지 경고를 피할 수 없었습니다. 처음에는 "안녕하세요, 세상!" 프로그램을 컴파일하고 실행한다 : 문제의 라인의 일부문자열 구조체 - 경고 : 부호없는 표현의 비교
std_lib_facilities.h:107:8: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
if (i<0||size()<=i) throw Range_error(i);
~^~
std_lib_facilities.h:113:8: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
if (i<0||size()<=i) throw Range_error(i);
~^~
: 내 컴파일러는 C를 인식하는 것 같지 않았어요 후
// trivially range-checked string (no iterator checking):
struct String : std::string {
using size_type = std::string::size_type;
// using string::string;
char& operator[](unsigned int i) // rather than return at(i);
{
if (i<0||size()<=i) throw Range_error(i);
return std::string::operator[](i);
}
const char& operator[](unsigned int i) const
{
if (i<0||size()<=i) throw Range_error(i);
return std::string::operator[](i);
}
};
내 C는 설정이 Can't build C++ program using Sublime Text 2에서 복사 숭고한 텍스트에 대한 파일 ++ 빌드 ++ 11 How do I update my compiler to use C++11 features?에 설명 된대로 : 그 누구도 날이 경고가 발생하는 이유를 이해하고 일을 해결할 수 있다면
{
"cmd": ["g++", "-Wall", "-Wextra", "-pedantic", "-std=c++11", "${file}", "-o", "${file_path}/${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"cmd": ["bash", "-c", "g++ -Wall -Wextra -pedantic -std=c++11 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
}
]
}
내가 그것을 감사하겠습니다 여자 이름.
그것이 부정적하는 * 부호없는 * 값 불가능을 의미하고, 같은 식의 부분이 항상 * 거짓 *가 될 것입니다있다. – WhozCraig
맞아요, 그 말이 맞습니다. Stroustrup이 그런 중복성을 쓰지 않을 것이라고 생각했기 때문에 제 컴파일러 나 다른 도구의 설정에 문제가 있습니다. – wander