가끔씩 현재 GCC/G ++ 명령 행 매개 변수 문서를 살펴보고 컴파일러 스크립트를 업데이트하여 모든 종류의 코딩 오류에 대해 편집증을 적용합니다. 관심이 있으시면 Here it is을 클릭하십시오.
불행히도 나는 대부분 잊어 버렸으므로 문서를 작성하지는 않았지만 - 철석, - 벽감, - 우물, + 그림자, - 비 - 가상 - dtor, - 와일드 스타일 - 캐스트, 오버 로딩 된 가상 , 그리고 몇 가지 다른 것들은 잠재적으로 위험한 상황을 경고하면서 항상 유용합니다. 나는 커스터마이즈 기능의 측면을 좋아합니다. 깨끗하고 정확한 코드를 작성해야합니다. 그것은 잘 복무했다.
그러나 두통이없는 것은 아닙니다. 특히 -WeffC++입니다. 몇 가지 예 :
- 가비지 수집을 사용하므로 쓸모없는 클래스 멤버에 포인터가있는 경우 사용자 지정 복사본 생성자와 할당 연산자를 제공해야합니다. 그래서 비어있는 개인용 버전을 선언해야합니다.
- 내 인스턴스화되지 클래스 (하위 클래스의 인스턴스 생성을 방지) G ++는 경우 T의 하위 클래스를 방지 "단지 개인 생성자없이 친구"
- 내
Final<T>
클래스 (에 대해 우는 소리를하지 않았다, 그래서 더미 개인 친구를 구현했다 T는 사실상 파생 됨) 표준 T는 템플릿 매개 변수를 사용하지 못하기 때문에 T를 개인 래퍼 클래스로 랩핑하여 친구로 선언해야했습니다.
- G ++은 결코 반환 값을 반환하지 않는 함수를 인식하고 대신 예외를 throw하고 noreturn 특성으로 선언되지 않은 함수에 대한 호출을 허용합니다. 항상 진실한 지시 뒤에 숨어 있으면 G ++가 너무 영리해서 인식되었습니다. 가변 변수를 선언하고 그 값과 비교하여 예외를 무시하지 않을 수있게하기 위해 잠시 생각났습니다.
- 부동 소수점 비교 경고. 오 세상에. 나는 주위에 x < = y와 x> = y 대신 x == y를 써서 해결해야한다.
- 섀도 잉 가상.좋아, 이것은 하위 클래스의 어리석은 섀도 잉/과부하 문제를 방지하는 데 유용하지만 여전히 성가시다.
- 함수에 대한 이전 선언이 없습니다. Kinda는 함수 선언을 바로 위에 복사하기 시작하자마자 중요성을 잃었습니다.
조금 어색함이 들리 겠지만, 전체적으로 C++ 및 일반적인 프로그래밍에 대한 이해가 높아진 매우 멋진 기능입니다.
G ++에는 다른 멋진 기능이 있습니까? 글쎄, 그것은 자유롭고 개방적이며, 가장 널리 사용되고 현대적인 컴파일러 중 하나이며, 지속적으로 경쟁사보다 뛰어나다. 사람들이 거의 모든 것을 먹을 수 있고, 거의 모든 플랫폼에서 사용할 수 있으며, 지옥에 맞게 사용자 정의가 가능하고 지속적으로 개선되며 광범위한 커뮤니티가있다. 싫어하는게 뭐야?