多文件程序编译时头文件的使用方法

如果把main函数放在第一个文件中,而把自定义函数放在第二个文件中,那就是需要在一个文件中声明函数原型
如果把函数原型包含在一个头文件里,那么每次使用函数的时候就不用声明其原型了

把函数声明放在头文件里,是很好的习惯

#ifndef是预编译指令,代表如果没有定义一个常量,那么就欲编译下面的代码

#ifdef是预编译指令,代表如果定义了一个常量,那么就欲编译下面的代码

#ifdef  宏

代码

#endif

.c文件 放函数的定义

.h 文件 放函数的声明

多文件编译时,头文件的写法

#ifndef A_H
#define  A_H

int add(int a, int b);
int max(int a, int b);

#endif 

//不管这个头文件被包含多少次, 只有一次生效 

原文地址:https://www.cnblogs.com/yangxiaoqin/p/8411111.html

时间: 2024-11-05 20:38:56

多文件程序编译时头文件的使用方法的相关文章

gcc在编译时头文件路径和动态链接库路径

在使用gcc编译连接生成可执行文件时,经常会碰到变量未定义.链接时或者运行可执行文件时找不到相应的动态库等问题,本文首先介绍了gcc在编译时头文件路径相关选项以及搜索路径顺序,然后讨论了编译成可执行文件时动态库的搜索路径顺序,最后说明了生成可执行文件后,运行文件时动态库的搜索路径顺序.搞清楚这三个搜索路径,在用gcc碰到的未定义变量或搜索不到动态库的问题,基本上都可以解决了. 头文件路径编译时相关选项 gcc可以使用选项-I(注意是大写)来指定头文件搜索路径,即头文件所在的文件夹.指定的路径即可

linux-gcc 编译时头文件和库文件搜索路径

一.头文件  gcc 在编译时寻找所需要的头文件 :  ※搜寻会从-I开始  ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH  ※再找内定目录/usr/include /usr/local/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/g++-3/usr/lib/gcc-lib/

27>>gcc编译时头文件和库文件搜索路径

一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始(gcc 参数,指定头文件搜索位置) ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH ※再找内定目录 /usr/include /usr/local/include /usr/lib/gcc-lib/i386-linux/2.95.2/include /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i

ubuntu64位系统编译时头文件找不到的问题(可以查看g++ -v路径,设置export C_INCLUDE_PATH)

今天编译webrtc时出现以下错误: ninja -C out/Debug Allninja: Entering directory `out/Debug'[1/6] CXX obj/talk/app/webrtc/java/jni...peerconnection_so.peerconnection_jni.oFAILED: g++ -MMD -MF obj/talk/app/webrtc/java/jni/libjingle_peerconnection_so.peerconnection_

c程序添加apue头文件

#include "apue.h" (c程序添加的头文件) 1. 超级用户权限登入 #cd /usr/include 2. 将apue.h和error.c两个文件copy到该目录下.(apue.h位于 your_apue_path/inlcude ; error.c位于your_apue_path/lib ) 以我的路径为例: #cp /root/apue.2e/inlcude/apue.h . #cp /root/apue.2e/lib/error.c . (实现apue.h中的出错

.c和.h文件的区别(头文件与之实现文件的的关系~ )

 .c和.h文件的区别 一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定义在.h中. 函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼: .h只做声明,编译后不产生代码   4楼: 这样做目的是为了实现软件的模块化 使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h

Linux下多个.c文件的编译和Makefile文件

在编程的时候,我们可以把一个完整程序的每个函数分离出来,写成.c文件,最后再一起编译和链接.这样有利于程序功能模块化,也方便检查代码错误. .h文件:里面编辑该程序需要引用的头文件. #ifndef  /#define / #endif : 防止该头文件被重复引用. 整体用法: #ifndef  A_H             //如果没有a.h文件,#define A_H.如果有,结束定义 #define  A_H            //定义a.h文件 定义a.h需要的头文件 #endif

九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)

1.将包含多个类型的源代码文件转换为可以部署的文件.有如下Program.cs的文件,代码如下: public sealed class Program { public static void Main(string[] args) { System.Console.WriteLine("Hello World"); System.Console.ReadKey(); } } 该应用程序实现了打印"Hello World"的功能,该应用程序中引用到的系统类型都来自

Microsoft Visual Studio下编译缺少头文件unistd.h解决办法

问题 使用Visual Studio 2012在Win7下编译一个来自于Linux平台的源文件时,要求使用头文件uninstd.h,报错: fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory 解决办法 对于VS2012来说,我们可以在默认库文件夹下(我的电脑是C:\Program Files\Microsoft Visual Studio 10.0\VC\include)添加一个un