C语言之#include用法详解
来源:互联网 发布:access 找不到数据库 编辑:程序博客网 时间:2024/06/11 00:14
学习Linux C,必须要理解include,只要弄清以下几个问题,就能完全理解include了!
1.#include 实质是什么?
预编译的时候copy include头文件的内容到当前行
(疑问:预编译命令 $gcc -E test.c -o test.i)
2.#include “” 与<> 有何区别?如何验证你的结论?
“”先在当前目录查找有无该头文件,有则包含该目录下的头文件,没有则到系统指定的目录下找该头文件
<>直接到系统指定的目录下查找该文件
(疑问:系统制定的默认目录为/user/include/,我们常使用的printf函数是在/user/include/stdio.h的文件中声明的)
验证结论:分别在当前目录和系统指定的目录下定义同名的头文件,但内容不一致,预编译后,看包含了哪个目录下的头文件
在gcc编译的时候,也可以通过-I 指定头文件所在的目录,若在指定的目录找不到,则回到默认的目录下查找
3.被#include的header file中最常见的内容分为哪几类?
宏定义
typedef
包含别的头文件
inline函数定义
函数声明
struct,union,enum类型定义
(其实可以打开一个.h文件来看看,如 /user/include/stdio.h)
4.如何防止重复#include?(更确切的表述为“重复#include时如何防止重复定义/声明?”)需要说出2种方案,并说明各自的优缺点?
方案一:#pragma once 优点:不会出现宏名重复 缺点:某些老的编译器不支持
方案二:#ifndef XXX
#define XXX
#endif 优点:所以的编译器都支持 缺点:出现宏名重复
一般我们看到大多都是选择方案二,我们只要避免宏名重复就行了
宏名规则(大写,文件名作为宏名主体,以两个下划线开头以下划线结束),例如ov8830.h,宏名为__OV8830_H__,这样的宏名
出现的重复的几率就很低了!
- C语言之#include用法详解
- c语言include用法
- C语言中#include用法
- C语言中,#include的用法:#include "" 和 #include<>区别
- C语言学习之预编译指令#include详解
- C语言中的#include的用法
- C语言编程中include的用法
- 关于c语言#include的用法
- C语言中#include "stdafx.h"详解
- C语言指针之二malloc的用法及详解
- C语言的宏用法及include(50)
- 关于C语言编程中include的用法
- 关于C语言编程中include的用法
- C和C++语言编程中include的用法
- 关于C语言编程中include的用法
- 关于C语言编程中include的用法
- 关于C语言编程中include的用法
- 关于C语言编程中include的用法
- fridge11_28:Git的安装和使用
- Springboot之输出json数据
- URL编码
- Git的使用
- 文件输入输出流(复制文本,视频,音频,图片的多种方式)
- C语言之#include用法详解
- sqlite3数据库命令简介(C语言环境)
- 运行时多态和编译时多态
- Toobar标题文字居中解决方案
- 通过web service查询天气
- Javascript学习笔记(数据类型)
- 关于将android项目打成第三方jar包两种情况
- 718. Maximum Length of Repeated Subarray
- c++:成员对象,基类初始化列表 接口与实现分离