2016-06-26 2 views
0

작은 C++ 코드를 작성하여 MSVS 2013에서 컴파일했습니다. 그러나 GCC를 사용하여 우분투에서 컴파일하려고했는데 존재하지 않는 std::abs을 사용하고 있다는 오류가 발생했습니다. 그런 다음 cmath을 포함시켜 문제를 해결했습니다.MSVC가 헤더를 포함하지 못하도록하는 방법

왜 MSVS가 불평하지 않았습니까? 자체적으로 일부 헤더가 포함되어 있습니까? 그렇다면 MSVS가 원하는 모든 것을 포함시키는 것을 어떻게 거부 할 수 있습니까? 그래서 이런 종류의 비 플랫폼 코드는 사라집니다.

답변

2

은 프로젝트 설정에 따라, 문제는 아마 직접이 포함 아니라고 할 수 있지만 그 자체

하여 일부 헤더를 포함한다. MSVC (및 GCC 역시)는 헤더 A를 헤더 B에 포함시키는 것입니다. 왜냐하면 A는 B에서 내부적으로 필요한 부분을 가지고 있기 때문입니다. 부작용으로, 물론 당신은 전체 헤더 트리를 재 작성하지 않고

을 원하는 무엇이든 포함에서 내가 MSVS을 거부 할 수있는 방법을 ...

예라면, 너무 헤더 B에서 다른 기호를 얻을 수 있습니다 , 당신은 할 수 없습니다. 그 (및 기타 많은 컴파일러 관련 사항)는 VS 및 GCC 모두를 사용하여 컴파일러를 컴파일하는 좋은 이유입니다. 컴파일러가 하나만있는 전체 프로그램을 작성하는 대신 항상 또는 적어도 일정한 간격으로 컴파일해야합니다. (특히 VS가 주요 도구 인 경우).

관련 문제