C语言里有没有类似C++前向声明的东西?
时间:2011-11-28
来源:互联网
C/C++ code
//// minGW编译器 codeblocks10.05 //// main.c //// 依赖 block2 typedef struct _block { int x; int y; block2* b2; }block; //// 依赖block typedef int(*func1)(block*); //// 依赖func1 typedef struct _block2 { func1 f1; }block2; int main() { // return 0; }
错误是:
C:\....\main..c|7|error: expected specifier-qualifier-list before 'block2'|
作者: dawn110110 发布时间: 2011-11-28
作者: dawn110110 发布时间: 2011-11-28
作者: onlycs 发布时间: 2011-11-28
貌似是没有,很少接触C
作者: dawn110110 发布时间: 2011-11-28
试一下:
struct block2;
typedef struct _block
...
作者: ouyh12345 发布时间: 2011-11-28
C/C++ code
struct _block2; typedef struct _block { int x; int y; struct block2* b2; }block; //// 依赖block typedef int(*func1)(block*); //// 依赖func1 typedef struct _block2 { func1 f1; }block2;
作者: FrankHB1989 发布时间: 2011-11-28
作者: fly55rain 发布时间: 2011-11-28
被使用的都需要提前声明吧
不见得。前向enum声明ISO C和ISO C++03都不支持。
作者: FrankHB1989 发布时间: 2011-11-28
可以。不过LZ的问题不在于这里。关键是C的typedef name和结构体的tag是两回事,不像C++那样在很多情况下可以省略struct,而一个typedef name没前向声明的用法。
C/C++ code
struct _block2;
typedef struct _block
{
int x;
int y;
struct block2* b2;
}bloc……
++
作者: qq120848369 发布时间: 2011-11-28
可以。不过LZ的问题不在于这里。关键是C的typedef name和结构体的tag是两回事,不像C++那样在很多情况下可以省略struct,而一个typedef name没前向声明的用法。
C/C++ code
struct _block2;
typedef struct _block
{
int x;
int y;
struct block2* b2;
}bloc……
作者: mayadong7349 发布时间: 2011-11-28
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28