2011-02-27 3 views
1

현재 Qt (4.7)로 작은 응용 프로그램을 작성하고 있습니다. 기호가 정의되어moc 파일에서 계단식 네임 스페이스를 사용하려면 어떻게해야합니까?

APP_START 
    class CoreClass {...} 
APP_END 

: 나는 litte 조금 게으른니까 그리고 나는 오프닝을 누르고 바로 가기에 대한 기호를 사용하고 네임 스페이스 선언을 폐쇄하고,

namespace app { 
    namespace core { 
     class CoreClass {...} 
    } 
} 

같이 중첩 된 네임 스페이스를 사용 전역 헤더 파일.

지금까지 그렇게 좋았습니다. 컴파일시 완벽하게 작동합니다. 그러나 moc 생성기가 moc 파일을 만들 때 네임 스페이스 선언을 놓치고 표준 네임 스페이스에 메서드가 생성됩니다. 기호를 사용하지 않으면 모든 것이 잘 작동합니다.

QT_BEGIN_MOC_NAMESPACE 심볼을 재정의하면 컴파일러에서 모든 포함에 대해 재정의 경고를 발생시킵니다. 이것은 실제로 작동하지만, 나는 그것이 정말로 좋지 않다고 생각합니다.

이 문제에 대한 더 나은 해결책이 있습니까?

답변

0

먼저 moc가 매크로 대체를 수행하지 않는 이유를 알아 냈습니다. 어쩌면 - 내가 틀렸어?

둘째, moc에 -D 매개 변수를 사용할 수 있습니다. 어쩌면 뭔가 : moc "-DAPP_BEGIN = 네임 스페이스 앱 {네임 스페이스 코어 {"

+0

Qt Creator를 사용하고 있기 때문에 그럴 것 같지 않습니다. 왜 moc dosn't가 subsection을하는 지 알아내는 당신의 접근은 나에게 좋게 들린다. 나는 그걸 추적하고있다. –

+0

Qt 툴에서 moc 생성기로 조금 연주했습니다. 그리고 전처리 지시어를 파싱하도록 지시 할 방법이없는 것 같습니다. 슬퍼. –

+0

BTW'Q_MOC_RUN' 심볼이 작동하지 않습니다. –

관련 문제