C语言里,我想用一个.h文件去做多个.c的header

作者&投稿:牟怎 (若有异议请与网页底部的电邮联系)
c语言 如何声明定义一个在.h中和多个.c中都能使用的变量~

static是声明外部变量只限于本文件引用,是本文件的全局变量。


要想文件之间通用定义外部变量 extern int 。。

楼主你好。
.h文件作为接口存在的。所谓接口就是指类型定义、变量声明、函数声明等等,基本上不会在.h里面放置函数实现。
.c里面才真正实现函数。
比方说,我写一个work的实现:
//work.h
#ifndef work_h
#define work_h
//你也可以在这里声明变量,或者定义类型、结构体
void work();//注意这只是一个函数声明
#endif

//work.c
//work函数的定义,或者说实现
void work(){
//这里才真正实现work中的代码
}
这样一来,如果你想用work.c中的work函数,只要#include "work.h"就可以了。

小技巧:
#ifndef work_h
#define work_h
#endif

这三行代码是为了保证在编译某一个.c或.cpp文件时,work.h头文件只编译一次。
比方你在main.c里面打了10次#include "work.h",这样预处理的时候会向main.c中拷贝10次work.h的代码(预处理时实际上会用work.h中的代码替代#include "work.h"这行代码),有了那三行就可以保证只有第一个拷贝的work.h参与编译,剩下的九个都跳过。(因为work_h在第一次#include的时候被定义了,往后就不会编译#ifndef .. #endif 中间的代码了)

这种做法没有问题,你的理解正好是反的。你有这种想法可能被是教科书误导了。
事实上这是一种很经典的做法,把公共的声明、宏定义放在公共的头文件中,然后让所有要使用这些声明、宏定义的c文件都包含这个公共的头文件。
最后提醒你注意,不要在头文件中放可以产生空间占用的语句,代码和变量定义都不行。如果以后组织头文件的过程中出问题,可以回过头来看看有没有这个问题。

列出的错误是因为链接程序找不到foo这个模块,把三个c文件组织成项目,并设置好包含路径,再试试。

这样写是决对可以的。可能是你没有添加mult.c,add.c到工程。
还有FOO。H这样写。
//foo.h

#ifndef FOO_H
#define FOO_H
#endif

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

可以实现。在xxx.c文件中直接#include“XX.h”,就可以了

将.h文件包含就可以了

h调用c文件的时候,会有重定义的


C语言 我想自定义一个函数来输出一句话 比如:printf("hello") 怎么弄...
include<stdio.h> void wo(){ printf("hllo\\n");} main(){ wo();} 够简洁的

我想用C#语言将一个字符串中的每一个字段分离出来。怎么实现呢??多谢...
比如:1.如果是这样 string str="abcd";可以使用字符串携带的方法 subString()截取字符串 用集合来接收分离出来的字段 List<string> list =new List<string>();使用FOR循环 for(int i=0;i<str.length;i++){ list.add(str.subString(i,1));} 再用foreach遍历出来就OK了 foreach(string st ...

我想用易语言编一个自动输入的程序
.版本 2 .子程序 输入 .局部变量 对象, 对象 .局部变量 计次, 整数型 .局部变量 数据, 文本型 .局部变量 键名, 文本型 对象.创建 (“WScript.Shell”, )数据 = 取剪辑板文本 ().计次循环首 (取文本长度 (数据), 计次)键名 = 取文本中间 (数据, 计次, 1).如果真 (键名 = “~...

C语言的题目,如果我想用a+打开一个有内容的文件,并想把文件里的文件读...
读文件本来就是从头读起 跟用什么打开方式是没关系的。

在Linux系统中,如何运行一个C语言程序?
\/a.out就是运行文件了。5、如果想要编译完的文件名不要用a.out文件。就可以在编译时打入.gcc test.c -o test.out然后就可以看见有一个test.out.文件 了。-o后面跟着的编译生成的文件名。6、再运行test.out在终端中输入.\/test.out结果如图。这样在linux系统下编译并运行C语言就完成了。

用语言表达爱一个人
用语言表达爱一个人,.你问我爱你有几分,思念在延伸;你问我爱你有多深,关怀依然真。时间过去了有几分,你的容颜在我心。愿我们幸福的走过这红尘。看看用语言表达爱一个人。 用语言表达爱一个人1 1、会吃醋,会自卑,会心酸,会想你,这大概就是喜欢你的味道。 2、总会有这样的人出现,让你明白原来那些颠簸的...

易语言问题,我想用易语言做一个电脑小软件,经过usb读取ds18b20传感器可 ...
可以的

用C语言如何编写一个石头剪子布的程序
printf("请出拳(1.剪刀、2.石头、3.布):");scanf("%d",&user);com=rand()%3+1; \/\/产生1-3范围内的随机数 printf("电脑出%s\\n",com==1?"剪刀":com==2?"石头":"布");switch(com-user) \/\/用电脑产生的数和用户输入的数的差值来判断胜负 { case 0:printf("平手\\n");break;...

我想用易语言写一个直接关闭一个进程的网络连接的代码。
易语言知识库里有 貌似是这个 调发送 事件 所属对象:网截 操作系统支持:Windows 当Windows系统中WinSock使用程序调用send函数时触发此事件,您可以在本事件中读取或更改此次被调用函数的参数。如不更改任何参数并保持处理默认调用,返回0、#拦截操作.默认调用;如要处理本次调用为无效,返回1、#...

怎么在C语言里用printf输出一个中文
一般情况下,应用程序采用的字符集为gbk, gb2312,该字符集中一个汉字由两个字节组成,所以在普通的C语言中,汉字是按字符串进行存储和输出的。(另:还有utf8字符集,一个汉字由三个字节组成,详情可查阅utf8字符集)char * p = "张三";输出多个中文:printf("%s\\n", p ); \/\/按字符串输出...

湖口县17190631829: C语言里,我想用一个.h文件去做多个.c的header
漕翔爽前: 这种做法没有问题,你的理解正好是反的.你有这种想法可能被是教科书误导了.事实上这是一种很经典的做法,把公共的声明、宏定义放在公共的头文件中,然后让所有要使用这些声明、宏定义的c文件都包含这个公共的头文件.最后提醒你注意,不要在头文件中放可以产生空间占用的语句,代码和变量定义都不行.如果以后组织头文件的过程中出问题,可以回过头来看看有没有这个问题.列出的错误是因为链接程序找不到foo这个模块,把三个c文件组织成项目,并设置好包含路径,再试试.

湖口县17190631829: c语言中如何同时运行多个源文件 -
漕翔爽前: 将函数的声明放到.h里,然后各个.c文件包含这个.h文件,这样函数就可以在多个.c文件里用了.

湖口县17190631829: c语言中如何调用.h文件 -
漕翔爽前: LZ是不是不知道怎么把多个文件联系在一起编译运行啊! 首先修正一个楼上的错误.对于用户自己写的头文件,应当用#include “XX.h” 而不能用#include <XX.h>.否则将会出错. LZ在写好这个头文件后,比如你说的XX.h 只需要在你的源文件,也就是.C文件的开头使用预处理命令#include "XX.h"便可以将头文件里面的内容包含到你的.C文件了. 然后直接编译,链接你的源文件(.C),然后生成生成.EXE文件,便可以运行了. LZ注意喽!一定要把你的头文件和源文件放到同一个文件夹目录下,才能正确运行喽!

湖口县17190631829: 请问C语言中一次操作多个文件该如何做? -
漕翔爽前: (1) 用 system("dir /b > abc.lis"); 把文件名存入abc.lis (2)打开文件abc.lis 打开输出文件 nameout (3)从abc.lis 里读一个文件名到 namein --(FILE *fin) (4)打开 namein 文件 (5) 读和处理namein,输出部分到 nameout -- FILE *fout) (6)关掉 namein 文件(7) 转 3,循环到 6 如果abc.lis 文件读到 EOF 则 结束 (8)关掉 输出文件和 abc.lis 文件 程序结束

湖口县17190631829: 怎样在C语言中用H头文件声明一个外部struct变量 -
漕翔爽前: 前提: 该变量必须为全局变量,不能是静态全局变量或局部变量.方法:1 在头文件中引用定义对应结构体的头文件,或者直接在该头文件中定义结构体.2 声明变量.声明格式为 extern struct type var_name; 其中,type为结构体类型名,var_name为结构体变量名.1 需要注意的是,extern可以省略,但带上extern会使程序可读性更好.2 不能有初始化值,一旦带有初始值,就会被系统按照定义处理,导致编译出错.按照以上方式声明后,凡是引用该头文件的,都可以直接使用该结构体变量.

湖口县17190631829: c语言中怎么用一个文件编辑一个函数,在另一个程序调用 -
漕翔爽前: 多文件编译.举个栗子1234567 //main.c#include "miku.h" intmain(void) { print("hello world!2113"); return0; } 123456 //miku.h#ifndef MIKU_H_#define MIKU_H_#include <stdio.h> externintprint(char*);#endif 123456 //miku.c#include "miku.h...

湖口县17190631829: 单片机工程中的多个C文件和H文件的使用 -
漕翔爽前: 1.所有函数定义到对应名称的H文件中(要有防重复引用机制) 2.所有H文件在一个“Includes.H”中包含 3.在所有C文件中包含“Includes.H”这样修改方便,一劳永逸. 缺点是:所有外部函数都对整个工程可见,编译速度相对下降我的项目基本都是这个结构,推荐使用!

湖口县17190631829: C语言要用多文件,该在VC中怎么用???怎么建立
漕翔爽前: 在VC中,你可以把程序的定义部分写进后缀名为点h的文件里,把程序的实现部分写进后缀名为点c或者点cpp的文件里,然后,当你要编译执行它时,你就得把定义部分的文件包含到实现部分的文件里来.比如你在文件名为abc.h上写了一个求和函数,然后你要调用它,那你就在实现部分的文件(后缀名为点c或者点cpp)的开始写上预处理命令#include"abc.h",这样就可以编译连接多个文件啦.

湖口县17190631829: C语言中.h函数声明文件 和.c函数实现文件是怎么连接的 -
漕翔爽前: .c是源文件,源文件不是引用了.h头文件吗,#include"***.h",也就是将头文件的内容插入到了源文件中了.

湖口县17190631829: c语言 多文件间工程中 一个文件如调用其他文件的函数与变量? -
漕翔爽前: 比如要调用test.c中的int foo(int n);先写test.c,如下:/*test.c,跟一般c文件一样(可以有预处理之类的东西,我这里求简单,只写了foo函数),但是没有main函数.*/int foo(int n){return n+1;}然后写一个h文件,命名为“test.h”(与上面的c文...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网