2016-10-24 1 views
0

전에 정의 된 매크로를 확장하지 않습니다 그러나 moc_other_file.cpp에 대해서는 TEXT NOT ADDED이 표시됩니다. 이 버그를 어떻게 해결할 수 있습니까? 컴파일 출력은 다음과 같습니다Qt는 MOC 파일 사용법 #include "foo.h"다음 코드를 감안할 때

/foo.h:15: warning: #warning "TEXT NOT ADDED" [-Wcpp] Debug/moc_other_file.cpp:9: from moc_otherfile.cpp:9:

other_file.cpp:26: error: undefined reference to 'Foo::TEXT'

+0

'moc'은'.cpp' 파일을 그대로 처리합니다. *''C'' 전 처리기를 먼저 실행하지 않습니다. 만약 전처리 결과가'moc' 출력에 영향을 준다면, 빌드 환경에서'.cpp' 파일을 전처리하고 결과에'moc'을 실행해야합니다. –

+0

@ G.M .:'.h' (또는'.hpp') 파일을 처리한다는 의미라고 생각합니다. – MSalters

+0

어떻게 할 수 있습니까, Qt에는 모든 것을 수행하는 기본 프로젝트 파일이 있습니다. – has

답변

1

moc_other_file.cpp, 이름이 말하는 것처럼, other_file.cpp이 아닙니다. 따라서 other_file.cppBIG_DATA_MACRO을 정의한 사실은 moc_other_file.cpp에 영향을 미치지 않습니다.

즉, 여전히 정의가 누락 된 TEXT입니다. 당신은 단순히 그것을 추가해야합니다.

의견으로는 TEXT은 상당히 나쁜 이름입니다. 대문자 식별자는 일반적으로 매크로에 사용됩니다. TEXT은 특히 Windows.h에서 사용되는 매크로입니다.

+0

moc_other_file.cpp는 신호와 슬롯 때문에 Qt에 의해 자동으로 생성됩니다. – has

+0

그래서 moc_other_file.cpp에서 #define 매크로를 사용할 수 없습니다. – has

+0

그러나 왜 신호 나 슬롯에'TEXT'의 정의가 필요한가? – MSalters