2012-05-11 3 views
1

나는 계층 구조라는 단어를 사용했는데, 그것이 올바른지 확실하지 않습니다! 설명하겠습니다.gcc는 포함 파일의 계층을 고려하지 않습니다.

내가 함께 아이 있습니다

#include "A.h" 
#include "B.h" 

그리고 X.cpp :

마지막으로 나는이 상태 Xh을 가지고

typedef vector<int> int_vector; 
int_vector my_function(int x, int y); 

:

#include <iostream> 
#include <vector> 
using namespace std; 

내가 함께 BH가

#include "X.h" 

// and the rest 

그러나 GCC로 컴파일하면 B.h에서 정의되지 않은 벡터가 표시됩니다. 이것은 문제를 설명하기위한 예입니다. 리눅스에서 컴파일하려고 변환하려고하는 프로젝트는 Visual Studio에서 Windows에서 완벽하게 컴파일됩니다.

파일을 변경할 수는 있지만 300+ 파일 프로젝트이므로 어떤 도움이나 제안이 매우 효율적입니까?

답변

0

게시 한 코드에는 아무런 문제가 없으며 gcc에이 버그가있을 것 같지 않습니다.

문제가 아닌 것 같습니다. 예를 들어 A.h (또는 B.h 또는 X.h) 개의 파일이 프로젝트에 있고 잘못된 파일이 어딘가에 포함되어있을 수 있습니다.

내 조언은 하나의 문제가있는 .cpp 파일을 전 처리기 (gcc -E)를 통해 실행하고 그 결과를 검사하는 것입니다. 그 때 정확히 무엇이 포함되는지 알려줄 것입니다.

+0

오류는 어리 석다. 일부 #if #else #endif 부분에서 코드 블럭이 네임 스페이스의 괄호를 닫음으로써 모든 것을 처리 할 수있게되었습니다! 일반적으로 컴파일하는 것이 좋습니다. 전에 그 접근법을 사용했습니다. 그리고 OpenGL (적어도 하나의 버전) – widgg

관련 문제