2013-04-14 1 views
0

오늘은 oglplus이라는 OpenGL 래퍼를 시험해보고 싶었습니다. 라이브러리를 사용할 수 있지만 IDE에서 나에게 오류 메시지 톤을 던지고 있습니다. QtCreator 및 EclipseCDT를 사용하여 시험해 보았습니다.IDE에서 구문 분석 할 수없는 코드를 작성할 수 있습니까?

기본적으로 IDE는 다양한 클래스의 멤버/메소드를 볼 수 없습니다. 그래서 나는 파기를했다. 예를 들어 클래스 FragmentShader에는 소스와 컴파일이라는 두 가지 방법이 있습니다.

Eclipse와 QtCreator가 다음 소스 코드를 보여줍니다.

#if OGLPLUS_DOCUMENTATION_ONLY 
    /// Fragment shader wrapper 
    /** 
    * @see Shader 
    * @see Program 
    * @ingroup objects 
    */ 
    class FragmentShader 
    : public Shader 
    { }; 
    #elif GL_FRAGMENT_SHADER 
    typedef Specialized< 
     Shader, 
     OGLPLUS_CONST_ENUM_VALUE(ShaderType::Fragment), 
     SpecializedShaderInitializer 
    > FragmentShader; 
    #endif 

아마도 모든 셰이더는 정확히 같고 이름이 다를 수 있습니다.

class Shader 
: public ShaderOps 
{ 
public: 
    Shader(ShaderType type); 
    Shader(ShaderType type, String description); 
}; 

ShaderOps가 중요한 클래스 인 것으로 보입니다.

는 또한 ShaderOps의 방법 '소스'(이 대중 블록에)

const ShaderOps& Source(
     const GLchar** srcs, 
     const GLint* lens, 
     int count 
    ) const 
    { 
     assert(_name != 0); 
     OGLPLUS_GLFUNC(ShaderSource)(_name, count, srcs, lens); 
     return *this; 
    } 

가 더 IDE 이러한 방법을 볼 수없는 이유 어떤 생각을 가지고 있습니까 발견? 소스 코드에 이상한 것이 있습니까?

IDE가 구문 분석하는 데 너무 다른 코드를 작성하는 것이 가능합니까?

Ps : eclipse cdt 및 Qtcreator를 사용하여 테스트했을뿐입니다.

+0

IDE를 구문 분석하지 않습니다 관련된 클래스/메소드를 표시하지 않습니다 #if OGLPLUS_DOCUMENTATION_ONLY

. – deepmax

+0

그래서 클래스에 어떤 메소드/멤버가 있는지 IDE에게 알리는 것은 컴파일러의 일입니다. –

+0

예, 실제로는 IDE가 컴파일러 등을 사용하여 코드를 구문 분석합니다. 그러나, 아마 일부 희귀 한 IDE가 스스로 그것을 할 것입니다. – deepmax

답변

4

이유는 경비 ifdef를 할 수있다 : 당신이 제대로 처리기를 정의하지 않으면, IDE가 컴파일러 것

관련 문제