C语言之#include用法详解

article/2025/9/16 23:52:07

学习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__,这样的宏名

出现的重复的几率就很低了!


http://chatgpt.dhexx.cn/article/Jg7OwUjt.shtml

相关文章

CMake中include的使用

CMake中的include命令用于从文件或模块(file or module)加载并运行CMake code。其格式如下&#xff1a; include(<file|module> [OPTIONAL] [RESULT_VARIABLE <var>][NO_POLICY_SCOPE]) 从给定的文件加载并运行CMake code。变量读写访问调用者的范围(Variable rea…

Makefile基础教学(include的使用方法)

文章目录 前言一、include在makefile中的概念介绍二、include使用示例三、include中需要注意的一些操作1. 在include前加-选项2. include触发规则创建了文件会发生什么3. include包含的文件夹存在 总结 前言 本篇文章将讲解include的使用方法&#xff0c;在C语言中使用include…

django urls include用法

在Django框架中&#xff0c;提供了非常清晰简洁的url管理方法&#xff0c;在新建一个project之后(此处为myproject),然后在项目中建立一个app(此处为myapp)&#xff0c;会看到有如下的目录结构&#xff1a; 一般所熟知的就是在myproject/myproject/urls.py中的urlpatterns列表中…

#include的使用方法

include的作用&#xff1a; #include叫做“文件包含” / include 语句包含并运行指定文件。 功能&#xff1a;它的功能是用来指定文件的全部内容替换程序中的命令行&#xff0c;从而使指定的文件与当前源文件连成一个源文件 书写格式&#xff1a; #include <文件名> …

移位密码及其python实现

就当为CSDN这方面的python开源做点贡献哈哈哈 移位密码 算法原理 ​ python代码 #移位密码 class ShiftCipher:global dddict(zip(.join(chr(i) for i in range(97,123)),list(range(0,26))))#字母表def __init__(self,k:int):self.kk;#k为移位数def encrypt(self,m:str):#加…

python编写移位密码实现加密与解密

python编写移位密码实现加密与解密 移位密码 参考代码&#xff0c;通过列表和ASCII实现&#xff1a; def encrypt(s,key):l list(s);l1 list();for i in l:if i.isalpha():k (ord(i) - 97 key) % 26 97;l1.append(chr(k));else:l1.append(i);s1 .join(l1)print(encrypte…

C++移位密码

C移位密码 这里/**移位密码*/ #include C移位密码欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建…

CTF-密码学-位移密码

题目&#xff1a;位移密码 一步之遥 读题&#xff1a;小明说b3W6f3FzOHKkZ3KiN{B5NkSmZXJ5[ERxNUZ5Z3ZyZ{Gn[kWigR>> 说完&#xff0c;然后他就以64m每秒的速度溜了。 flag格式为SeBaFi{xxx} 审题&#xff1a;考察移位密码&#xff0c;题目提示64m/s的速度&#xff0c;联…

简单密码位移

好久不见啊~~~最近事比较多&#xff0c;所以小生啊&#xff0c;大概是变的懒了&#xff0c;不说废话啦 今天小生和大家分享一下 Java 编写 简单密码位移&#xff0c; 一、要求 二、基本实现功能 三、源代码 已分享至百度云盘&#xff0c;微信回复&#xff1a; 02 &#xff0…

CTF古典密码:移位密码

CTF古典密码&#xff1a;移位密码 文章目录 CTF古典密码&#xff1a;移位密码前言简单例子曲路密码栅栏密码云影密码总结 前言 密码和编码都是加密&#xff0c;但是有着本质区别&#xff1a;那个密码比编码多一个密钥&#xff08;key&#xff09;。这里的密码&#xff0c;不是…

位移密码加密、解密matlab实现

密码学&#xff1a;位移密码加密、解密matlab实现 一、matlab实现&#xff1a;自定义函数 function texttrans_cipher(strText,operation,key) %%% 对明&#xff08;密&#xff09;文采用位移密码进行加&#xff08;解&#xff09;密&#xff1b; %%% 明文&#xff08;密…

初学加密算法之移位密码

移位密码的加密方法很简单&#xff0c;就是将明文按照某种方式进行移位&#xff0c;著名的凯撒密码就是移位密码的一种。 比如‘’i am nine‘’后移3位后的密文就是 l dp qlqh 按照这种思想我设计了一段程序来实现移位加密&#xff1a; #include<stdio.h> #include&l…

【经典密码】移位密码和代换密码的实现

1&#xff0c;移位密码 先读取输入 K&#xff0c;表示移位密码的参数。然后读取输入的一个只含小写字母的字符串。要求你输出该字符串经过 K 位加密之后的加密串&#xff0c;其中串的长度在 100 以内&#xff0c;0<K<25 #include<bits/stdc.h> using namespace st…

信息安全——移位密码算法(C++实现)

信息安全导论课程学习的实验一&#xff0c;移位密码算法C的实现。 移位密码算法是较为简单的算法&#xff0c;只是简单的对明文进行指定位数的移位操作&#xff0c;C语言实现也较为简单&#xff0c;不需要过多赘述。 以下简单介绍了以下移位密码算法的原理&#xff1a; 【原理…

linux常用命令学习总结(超详细)

作为一个程序员&#xff0c;我们在进行项目部署和运维时&#xff0c;经常会用到一些linux命令&#xff0c;可是这些命令老是忘记&#xff0c;每次用到的时候都要去谷歌百度&#xff0c;很是麻烦&#xff01;这不&#xff0c;为了自己使用方便&#xff0c;对常见的linux命令进行…

批处理命令之find 和findstr

find 作用&#xff1a;从文件中收索字符串 格式&#xff1a;find 参数 "字符串" 路径\文件名 参数&#xff1a; /V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。 /OFF[LINE] 不要跳过具有脱机属性集…

pygame安装教程(python)

1&#xff0c;安装好python。 2&#xff0c;打开cmd 3&#xff0c;输入&#xff1a;pip --version 如果显示未安装pip&#xff0c;那么输入pip。 等待安装完毕。 检查pip是否安装&#xff1a;pip --version 4&#xff0c;输入&#xff1a;pip install pygame 可能会出现这种错…

pygame安装教程(window)

来自一个初学者的疯狂吐槽&#xff0c;最近在学python设计游戏&#xff0c;要安装pygame。这他娘的&#xff0c;安装一个这个&#xff0c;能把刘某人老命要了&#xff0c;各种资源以及资料&#xff0c;各种尝试&#xff0c;各种装不上&#xff0c;各种错误&#xff0c;各种乱七…

Windows Pygame 安装教程 (自己识别版本号并下载)

最近在自学python&#xff0c;准备写个小项目&#xff0c;这个项目需要安装pygame&#xff0c;书中有给出了两个下载链接&#xff1a;https://bitbucket.org/pygame/pygame/downloads/和http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame。 自己也尝试下载了两个版本可是提示…

Python之pygame安装教程

首先把Python进行安装好。配置两个环境变量: 在系统变量中找到path&#xff0c;加入Python和pip的安装目录。打开cmd&#xff0c;输入Python&#xff0c;检查Python是否配置成功&#xff0c;如跟图1一样说明配置成功。关闭cmd&#xff0c;重新打开&#xff0c;键入pip&#xff…