头文件,支持文件和主文件三者之间的关系
2017-03-16 15:43
796 查看
先说一下我定义的支持文件和主文件:
支持文件是指实现头文件中各种声明的具体定义文件,比如头文件中写了一个函数原型 int sum(int a,int b); 那么支持文件中会写出函数sum的具体定义,比如 int sum(int a,int b) { return(a+b); }
主文件就是指调用头文件中声明的函数的文件了,也就是主函数main()所在的文件。比如 int main() {int a=10; int b=5; int c; c=sum(a,b); cout<<"c="<<c<<endl; cin.get(); }
okay,下边说一下我在VS上进行的一些尝试:
首先,无论那种类型,主文件都要包含自己定义的头文件,那么这些头文件对应的支持文件是否一定要包含这些头文件呢?
①普通函数:头文件中声明了普通函数,那么支持文件中可以包含该头文件,也可以不包含该头文件,不影响。
②名称空间:头文件中声明了某个名称空间,那么在支持文件中写该名称空间内某函数具体定义;支持文件可以包含该头文件,也可以不包含该头文件,同样不影响。
③类:类很特殊,与前两者不同,头文件中声明了某个类,那么在支持文件中写该类内某函数具体定义;支持文件必须包含该头文件,否则会报错:未定义的类或名称空间。
那么,考虑得更进一步,在头文件中声明了某个名称空间Jack,在Jack内部又声明了一个类Student,支持文件中书写Student中函数的具体定义,那么在支持文件中要不要包含头文件呢,试了一下,必须包含该头文件,否则会报错。
总结:如果在支持文件中书写具体定义时涉及到某个类,则必须包含声明该类的头文件。而普通函数和名称空间则可以包含,也可以不包含。(虽然C++书上说名称空间的支持文件要包含头文件,不过实验发现,并不需要,当然了,还是尽量包含,防止出错)。
主文件必须包含涉及到的一切头文件。
支持文件是指实现头文件中各种声明的具体定义文件,比如头文件中写了一个函数原型 int sum(int a,int b); 那么支持文件中会写出函数sum的具体定义,比如 int sum(int a,int b) { return(a+b); }
主文件就是指调用头文件中声明的函数的文件了,也就是主函数main()所在的文件。比如 int main() {int a=10; int b=5; int c; c=sum(a,b); cout<<"c="<<c<<endl; cin.get(); }
okay,下边说一下我在VS上进行的一些尝试:
首先,无论那种类型,主文件都要包含自己定义的头文件,那么这些头文件对应的支持文件是否一定要包含这些头文件呢?
①普通函数:头文件中声明了普通函数,那么支持文件中可以包含该头文件,也可以不包含该头文件,不影响。
②名称空间:头文件中声明了某个名称空间,那么在支持文件中写该名称空间内某函数具体定义;支持文件可以包含该头文件,也可以不包含该头文件,同样不影响。
③类:类很特殊,与前两者不同,头文件中声明了某个类,那么在支持文件中写该类内某函数具体定义;支持文件必须包含该头文件,否则会报错:未定义的类或名称空间。
那么,考虑得更进一步,在头文件中声明了某个名称空间Jack,在Jack内部又声明了一个类Student,支持文件中书写Student中函数的具体定义,那么在支持文件中要不要包含头文件呢,试了一下,必须包含该头文件,否则会报错。
总结:如果在支持文件中书写具体定义时涉及到某个类,则必须包含声明该类的头文件。而普通函数和名称空间则可以包含,也可以不包含。(虽然C++书上说名称空间的支持文件要包含头文件,不过实验发现,并不需要,当然了,还是尽量包含,防止出错)。
主文件必须包含涉及到的一切头文件。
相关文章推荐
- android文件系统system-ramdisk-userdata三者之间的关系
- h头文件、lib库文件及dll动态库文件之间的关系
- h头文件 .lib库文件 .dll动态库文件之间的关系
- .dll动态链接库文件、h头文件、 .lib库文件之间的关系与联系
- android文件系统system-ramdisk-userdata三者之间的关系
- 将文件之间的编译依赖关系降至最低
- ArcIMS地图配置文件,地图服务,请求和响应之间的关系
- 用户,角色,功能三者之间的关系视图
- Struts程序各文件之间的关系(1)
- C++中头文件和类的实例的大小之间的关系
- HeapAlloc和GlobalAlloc以及VirtualAlloc三者之间的关系
- Oracle10g数据库中表空间和数据文件之间的关系
- J2EE—组件,容器,服务器三者之间的关系
- ArcIMS地图配置文件,地图服务,请求和响应之间的关系
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 ALTER AUTHORIZATION 语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。
- Makefile.am, Makefile.in, Makefile文件之间关系
- ArcIMS地图配置文件,地图服务,请求和响应之间的关系
- 用户,角色,功能三者之间的关系视图
- 数字证书、公钥和私钥这三者之间的关系是什么
- HeapAlloc和GlobalAlloc以及VirtualAlloc三者之间的关系(转贴)- -