Linux C 多文件编程
来源:互联网 发布:淘宝可以货到付款吗? 编辑:程序博客网 时间:2024/05/19 02:24
学了很久的C语言,很多程序还是只有一个main.c,而不懂得如何多文件编程。
常见的程序由多个源文件组成,通常还有一些头文件。源文件包含函数的定义和外部变量,而头文件包含可以在源文件之间共享的信息。
- 源文件
事实上,可以将程序分割成任意数量的源文件。根据惯例,源文件的扩展名必须为.c,其中一个源文件必须是main.c,作为程序的起点。
分割函数时,把相关的函数和变量分组放到同一个文件中。
- 头文件
#include 使得在任意数量的源文件中共享一个宏定义或类型定义成为可能。它会通知预处理器打开指定的文件,并且把它插入到当前文件中。
- #include
#include <file.h> //C语言自身库头问价
#include “file.h” //所有的其他头文件和自己编写的头文件
两者区别在于后者会先搜寻当前目录,然后搜寻系统头文件所在目录。
所以不能把自己定义的头文件用尖括号括起来,这样编译器会直接搜寻系统文件所在目录,显然是找不到头文件的。
#include “/myfiles/file.h” //可以帮助定位头文件
- 可移植性技巧
通常最好的做法是不要在#include 指令中包含路径或者驱动器的信息。
不然当需要移植到其他电脑甚至是其他系统时,编译会变得很困难。
- 共享函数原型
- #include<stdio.h>
- #include<stdlib.h>
- void func1(); //函数声明
- void func2(); //函数声明
- void func3(); //函数声明
- int main()
- {
- printf(”hello world!\n”);
- func1();
- func2();
- func3();
- system(”pause”);
- return 0;
- }
- //函数实现
- void func1()
- {
- printf(”我是函数1\n”);
- }
- void func2()
- {
- printf(”我是函数2\n”);
- }
- void func3()
- {
- printf(”我是函数3\n”);
- }
可以写成一个main.c / stack.c / stack.h
stack.c
#include “stack.h”
void func1()
{
printf(“我是函数1\n”);
}
void func2()
{
printf(“我是函数2\n”);
}
void func3()
{
printf(“我是函数3\n”);
}
stack.h
void func1();
void func2();
void func3();
main.c
#include <stdio.h>
#include <stdlib.h>
#include “stack.h”
int main(int argc, char *argv[])
{
func1();
func2();
func3();
system(“pause”);
return 0;
}
其中,stack.h还可以写成另一种形式
#ifndef STACK_H //使用 #ifndef / #endif 来封闭文件的内容,这样可以保护头文件stack.h
#define STACK_H
void func1();
void func2();
void func3();
#endif STACK_H
阅读全文
0 0
- Linux C 多文件编程
- linux C 编程基础-多文件工程编程框架
- linux c编程 文件IO
- linux-C编程-文件操作
- linux文件编程- C库
- linux-C编程-文件操作
- linux C 的文件编程
- [Linux C编程]文件操作
- [Linux C编程]文件操作
- 文件编程(Linux---C)
- [Linux C编程]文件操作
- [Linux C编程]Linux文件锁
- Linux下C编程入门(.h文件,.c文件,以及多文件调用的方式)
- Linux 文件编程及通用C语言的文件编程
- Linux C编程第六回 - 文件操作
- Linux C编程--目录文件操作
- linux下C编程(文件相关)
- linux c/c++ 编程之-----管道文件
- 新建file时,file是否存在的问题
- Spring 的七大模块
- 1023. 组个最小数 (20)
- 正则表达式的语法、RegExp对象的匹配方法、String对象的匹配方法
- css(1)
- Linux C 多文件编程
- day07-BootStrap与mysql回顾
- 《HBase权威指南》读书笔记 第八章:架构,HFile格式
- JAVA引用类型强制类型转换
- java对象引用
- 单链表的归并排序:时间复杂度O(nlogn),空间复杂度O(1)
- 挑战nbc (noip2016)膜你赛Day1提高组
- java实现中缀转后缀,后缀计算值
- Leading and Trailing LightOJ