是否可以编写没有IDE能够解析的代码?

时间:2013-04-14 18:02:37

标签: c++

今天我想尝试一个名为oglplus的opengl包装器。我可以使用该库,但我的IDE向我扔了大量的错误消息。我用QtCreator和EclipseCDT试了一下。

基本上没有IDE能够看到各种类的成员/方法。所以我做了一些挖掘。例如,类FragmentShader至少有两个名为Source and Compile的方法。

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中找到了'Source'方法(它在公共区块中)

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测试过它。

1 个答案:

答案 0 :(得分:4)

原因可能是ifdef guards:#if OGLPLUS_DOCUMENTATION_ONLY

如果未正确定义预处理器,IDE将不会显示相关的类/方法