关于一个工程中多个文件的相互调用的学习笔记(C语言)
2013-07-12 15:59
323 查看
关于在一个工程里,有许多个源文件,其中只有一个是主函数,其他的都是定义的函数,你如何实现?
现在将自己的笔记记录如下:
1、举一个最简单的例子:比如有一个main.c文件,另外一个是Prin.c,要在main.c中调用Prin.c中定义的函数,需要新建一个Prin.h文件,然后在该文件中定义这个函数:如void Print(int n);然后在main.c中#include"Prin.h",这里注意,只有系统文件采用include< >,别的文件用双引号。在windows下,IDE做好了编译的过程,直接运行main.c就OK了,但在linux下,就需要写一个makefile(当然 如果源文件较少,只需要运行命令“gcc
-o main main.c Prin.c”就OK了),makefile的定义规则我也是看了些《跟我学Makefile》,当然我也只是学了一些皮毛,只懂得最基本的规则,具体的我也要继续学,makefile书写如下:
main:main.o Prin.o .o文件时中间目标文件。
(Tab键)gcc -o main main.o Prin.o main就是可执行文件
main.o:main.c Prin.h(这里面不需要自己再回到vim编辑器中看有什么头文件,只需要在shell脚本下,运行命令 gcc -MM main.o就显示了,这里面的输出结果就是:main.o:main.c Prin.h,如果是cc编辑器,就是-M)
(Tab) gcc main.c
Prin.h:Prin.c
(Tab)gcc Prin.c
clean:
具体书写自己查吧。
我查阅到关于这里的函数定义的规则:
对于某一文件中的函数,它可以直接引用本文件中所定义的函数和外部变量。如果要想引用别的文件中定义的函数或变量,则应在引用之前用extern,对此变量或函数进行说明。如果一个函数或外部变量在定义时前面加有static说明,那么就只有本文件内的函数能够使用它。但这里,我前面没定义,也同样实现了调用,我猜是默认为extern了,这只是我猜的。
现在将自己的笔记记录如下:
1、举一个最简单的例子:比如有一个main.c文件,另外一个是Prin.c,要在main.c中调用Prin.c中定义的函数,需要新建一个Prin.h文件,然后在该文件中定义这个函数:如void Print(int n);然后在main.c中#include"Prin.h",这里注意,只有系统文件采用include< >,别的文件用双引号。在windows下,IDE做好了编译的过程,直接运行main.c就OK了,但在linux下,就需要写一个makefile(当然 如果源文件较少,只需要运行命令“gcc
-o main main.c Prin.c”就OK了),makefile的定义规则我也是看了些《跟我学Makefile》,当然我也只是学了一些皮毛,只懂得最基本的规则,具体的我也要继续学,makefile书写如下:
main:main.o Prin.o .o文件时中间目标文件。
(Tab键)gcc -o main main.o Prin.o main就是可执行文件
main.o:main.c Prin.h(这里面不需要自己再回到vim编辑器中看有什么头文件,只需要在shell脚本下,运行命令 gcc -MM main.o就显示了,这里面的输出结果就是:main.o:main.c Prin.h,如果是cc编辑器,就是-M)
(Tab) gcc main.c
Prin.h:Prin.c
(Tab)gcc Prin.c
clean:
具体书写自己查吧。
我查阅到关于这里的函数定义的规则:
对于某一文件中的函数,它可以直接引用本文件中所定义的函数和外部变量。如果要想引用别的文件中定义的函数或变量,则应在引用之前用extern,对此变量或函数进行说明。如果一个函数或外部变量在定义时前面加有static说明,那么就只有本文件内的函数能够使用它。但这里,我前面没定义,也同样实现了调用,我猜是默认为extern了,这只是我猜的。
相关文章推荐
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- iOS学习笔记-workspace添加工程时只有一个proj文件问题
- C语言学习笔记——关于 .obj 文件的理解
- C++学习笔记,关于一个文件中的全局变量在其他文件中的使用
- 零基础学习安卓【笔记 01 工程文件介绍】
- Python学习笔记,我的一个PyQt工程,一:Python是什么鬼?
- STM32学习笔记之Keil工程Lib库文件的制作和运用
- 每天一个 linux 命令(17):文件查找命令 whereis 命令---学习笔记
- Objective-C学习笔记(十九)——对象方法和类方法的相互调用
- [文件系统]文件系统学习笔记(八)---mount系统调用(代码相关)
- [文件系统]文件系统学习笔记(十一)——mount系统调用(其它)
- 第六十五篇:VS工程文件中cpp、h文件在main中调用关系及如何避免出现“找到一个或多个多重定义的符号”
- 【Java学习笔记】基础知识学习18【一个小文件的复制方法】
- cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明)
- Java File类学习笔记4:自定义一个类,过滤指定扩展名的文件
- 【Android开发学习笔记】【第一课】初识New Project,工程文件介绍
- maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
- 关于C语言中函数调用和参数传递机制的探讨(二 .传递一个参数)
- cocos2d-x学习笔记(2)在同一个工程里创建多个Cocos2d-x项目