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測試過。
的IDE不會解析,編譯器會。 – deepmax
因此,編譯器的工作是告訴IDE一個類有哪些方法/成員? –
是的,實際上它取決於,通常IDE使用編譯器或類似的東西來解析代碼。但是,也許有些罕見的IDE自己做。 – deepmax