博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链接相关 & 预处理
阅读量:7117 次
发布时间:2019-06-28

本文共 873 字,大约阅读时间需要 2 分钟。

链接

 

当多个文件同时被编译时,不同文件中的函数的使用,比如main中使用了其他文件的函数,那么这是有问题的。因为main不认识该函数

解决以上问题的办法有2个,

1) 用 extern 来声明别的文件中的函数或变量,而此时,如果多个文件需要该文件中的函数时,每个文件都要声明一次,这样不好。所以就引入第2种办法

2)使用头文件,然后在使用到得地方加入 #include “stack.h”这样的话,就解决了以上问题,使用头文件时要注意,Header Guard,就是要避免头文件被多次的预处理。具体办法是使用宏。。。看以下例子

Header Guard/* stack.h */#ifndef STACK_H#define STACK_Hextern void push(char);extern char pop(void);extern int is_empty(void);#endif

这样做的目的是,防止同一个头文件被多次处理,如果是已经定义了STACK_H这个宏的话,那么该文件就会被看做是个空文件。至于动态链接(比如链接math.h) 这个是在本地链接之后。有的时候还需要指定链接的库才可以,详情参考gcc相关内容。

预处理

1。宏定义

变量宏 #define N 20 或 #define STR “hello, world”

函数宏 #define MAX(a, b) ( (a) > (b ) ? (a ) : (b ))

k = MAX( i, j );

定义这种函数宏要格外小心,首先这种的参数不需要类型,另外要多用括号 ()

条件预处理

条件编译#ifndef STACK_H#define STACK_H/* body of header */#endif

 

另外判断式#if MACHINE == 68000    int x;#elif MACHINE == 8086    long x;#else   /* all others */    #error UNKNOWN TARGET MACHINE#endif

 

你可能感兴趣的文章
Comet和WebSocket
查看>>
C#程序实现窗体的最大化/最小化
查看>>
使用委托进行异步编程
查看>>
Gmail在outlook设置
查看>>
scala模式匹配
查看>>
JPush删除别名及回调函数(SWIFT)
查看>>
silverlight 跨域socket
查看>>
编程不是功能实现了就可以了
查看>>
利用Dockerfile构建一个nginx容器
查看>>
Linux/Freebsd下时间转化
查看>>
VMware vSphere 5.1 群集深入解析(十五)-DRS推荐向导
查看>>
sklearn.metrics.auc
查看>>
Linux中通过/proc/stat等文件计算Cpu使用率(一)
查看>>
微软MED-V虚拟化实战教程之一部署
查看>>
linux 下用python 遍历文件夹
查看>>
chmod和permission
查看>>
组策略应用之二:重定向文件夹
查看>>
Linux下建立静态库的实例讲解
查看>>
mac显示隐藏文件
查看>>
4-2 ADO.NET-查询和检索数据7
查看>>