C语言嵌套结构体名称在C++环境下无法编译的问题求助
C语言嵌套结构体名称在C++环境下无法编译的问题求助
各位好,我最近在做C和C++混合开发的时候遇到个问题,卡了好一会儿,想请教下大家。我有一段用嵌套结构体写的C代码:
struct long_project_name_x { struct long_project_name_x_y { struct long_project_name_x_y_z { int i; } z; } y; };
在纯C环境里,这些嵌套定义的结构体其实都是处于全局命名空间的,所以我可以直接引用它们,比如这样写完全没问题:
struct long_project_name_x x = { 1 }; struct long_project_name_x_y y = { { 2 } }; // 原本的初始化代码
但把这段代码放到C里编译就报错了,编译器说找不到struct long_project_name_x_y和struct long_project_name_x_y_z的定义。后来我才搞明白,原来C里嵌套结构体的作用域是被限制在外层结构体内部的,和C的规则不一样。
想问问有没有什么优雅的解决办法,能让这段代码在C和C++环境下都能正常编译?因为项目里这类结构体挺多的,不想一个个改结构定义。
备注:内容来源于stack exchange,提问作者Dominik Kaszewski
相关产品推荐
相关产品推荐

