c/c++ 前置声明 -- typedef问题
来源:互联网 发布:接口数据完整性校验 编辑:程序博客网 时间:2024/06/07 06:55
前置声明的好处很多, 比如能避免头文件互相包含的冲突, 比如有时我们在一个头文件中只需要另一个头文件的某个类型定义, 只需要对它做一下前置声明即可,
因为为了相对较小的目的要包含进来一个很大的头文件, 实在有些"不值", 况且这个头文件可能还要被其它很多文件再包含的, 这样代价就更大了.
所以做前置声明即可, 在源文件真正需要的时候再包含那个头文件.
之前也声明过类和c++方式定义的struct, 今天遇到了一个typedef的结构体, 结果前置声明不奏效了.
网上查了些资料, 有的帖子没有讨论出结果, 有的直接定性typedef的不能前置声明, 只能include进来.
幸好自己写小例子多测试了一会, 发现语法上还是支持的. 举例如下:
#a.h:
typedef struct my_time_t{ int hour, minute, second;} MY_TIME;
#b.h
struct my_time_t;typedef struct my_time_t MY_TIME;void func(MY_TIME* mt) {}
#main.cpp
#include "a.h"#include "b.h"int main(){ MY_TIME mt; func(&mt); return 0;}
这样就可以成功了. 在b.h中做前置声明时, 先声明有my_time_t这样一个struct, 然后说明MY_TIME是由那个结构体typedef出来的,
这样void func(MY_TIME* mt);这个函数声明就能编译通过了. 直接做struct MY_TIME;这样的前置声明是不被接受的.
- c/c++ 前置声明 -- typedef问题
- c/c++ 前置声明 -- typedef问题
- c/c++ 前置声明 -- typedef问题
- [c++] typedef 无法前置声明
- typedef与前置声明
- typedef 的前置声明
- C专栏E-声明typedef
- C/C++声明类型typedef
- [C++]前置声明和头文件
- [C++]前置声明和头文件
- C++::由一个例子入手前置声明
- [C++]前置声明和头文件
- C++ typedef 类型前置声明
- C语言typedef与复杂函数声明问题详解
- typedef:C 中复杂的函数声明
- typedef define C复杂函数声明
- typedef define C复杂函数声明
- typedef C 中复杂的函数声明
- git bisect
- C和C++的时间编程
- ACM去字符串
- String字符串相加的问题
- 图解使用Win8Api进行Metro风格的程序开发二
- c/c++ 前置声明 -- typedef问题
- CSU wifi免帐号自动登陆器
- shell脚本:for语句
- java static块
- 无法更新程序数据库debug\vc90.pdb
- skew二进制算法
- 处理数据批量生成sql插入语句
- error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
- Asp.Net生命周期和Http管道技术