前向声明的结构可以用在另一个结构的定义中吗?例如:
struct A;
struct B
{
float x;
float y;
A z;
};
我试图在链接/编译时解析GLSL文件,以便更容易在C中使用它们。我似乎无法在任何地方找到这样的细节。
答案 0 :(得分:3)
据我所知,GLSL并未正式支持前向声明的结构。关于结构的The spec, section 4.1.8没有提到这样的特征,并且阅读语法附录,我也找不到任何提及。
如果你考虑一下,前向声明在GLSL中并没有真正有用,因为它们在C中。由于GLSL没有指针,尝试使用前向声明的结构将尝试访问不完整的类型。在C语言中,前向声明用于允许声明不透明指针。
如果您正在为GLSL编写自定义解析器,请务必阅读GLSL spec:着色语言语法的第9部分。 GLSL基于C,但它只是C的一小部分。