欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > c语言-编译预处理

c语言-编译预处理

2025/2/22 16:28:31 来源:https://blog.csdn.net/m0_71813740/article/details/140936113  浏览:    关键词:c语言-编译预处理

9 编译预处理

目录

9 编译预处理

预处理命令

一、预处理命令的作用

二、预处理命令

1、#include

2、#define

3、#if - #endif

三、C语言的关键字

四、安装vscode工具

模块化开发

一、模块化开发的作用

二、项目的目录结构

三、模块化开发

四、问题

例:


预处理命令

一、预处理命令的作用

        -- 在编译之前,需要执行的命令                

        -- 编译预处理是在对源程序正式编译之前的处理,如inlcude先替换后计算

二、预处理命令

1、#include

                 -- 包含包括
(1) #include<>          -- 默认优先从系统目录中查找头文件

(2) #include" "           -- 默认优先从项目目录中查找头文件

2、#define

                -- 宏定义   -- 完全替换       

(1)不带参         -- 替换                 -- int_32 int *     -- int_32 a,b;

alt text

tip:执行结果为一个是指针的长度,一个是int类型的长度

(2)带参

        -- #define div(a,b) a/b     -- int a =10,b = 20;   ,   div(a-5,b+3) = 10-5/20+3 = 13;

        -- 找最大值         #define MAX(a,b) a>b?a:b;

3、#if - #endif

                -- 条件编译

(1)#if --- #endif -- 条件编译代码内容         --在.c源码文件中

(2)#if - #elif - #else -#endif         -- 条件编译代码内容 --在.c源码文件中

(3)#ifdef -- #endif         -- 如果定义...

(4)#ifndef --#define --#endif         --如果未定义... 定义.. 结束
                -- .h文件中使用较多         -- 防止重复编译

三、C语言的关键字

                -- 32个

1、数据类型之类

        -- char,int,short,long,float,double,void,signed,unsigned,struct,union,enum -- 12个

2、流程控制之类

        -- if,else,switch,case,break,default,while,do,for,continue,goto,return --12个

3、其他之类

        -- const,static,extern,typedef,sizeof -- 5个

4、废弃之类

        -- auto,register,volatile --3个

四、安装vscode工具

               -- 参考安装步骤

模块化开发

一、模块化开发的作用

1、按照项目的结构进行项目开发         -- 分文件,分类型进行项目开发

2、多文件进行程序开发         -- 方便功能移植,内容排错

二、项目的目录结构

1、include         -- 需要引入的.h文件所在位置,内容排错

2、lib                 -- 需要引入的第三方库文件

3、output          -- 编译后的可执行文件

4、src               -- 源码.c文件

alt text

三、模块化开发

1、.c文件         -- 功能实现的源码文件         -- 按照功能要求进行文件划分,分成不同的.c文件
                        -- 使用extern声明函数 ,表示使用外部资源的函数(extern 可以省略)

2、.h文件         -- 声明文件         -- 执行该功能所需要声明的内容

(1)声明文件中不能对变量进行赋值           !!不能在.h文件中对变量赋值!!

(2)声明文件中包含的内容:

                a. 实现该功能所需的内容         -- 引入其他资源

                b. 声明该功能的函数         -- 暴露自己的函数,提供给别人使用

四、问题

                --  .h文件调用报错

alt text

报错:检测到#include 错误。请更新includePath

解决方法如下:

1、安装g++命令                                 -- sudo apt-get install g++

2、执行g++ -v -E -x c++ -                 -- 找到以下内容:

alt text

3、在vscode中按ctrl+shift+p,在弹出的输入框中,输入c/c++,找到c/c++编辑配置(JSON),打开后把2中标记的内容复制到includePath中,保存并关闭该文件即可。

alt text

例:

1、如何在虚拟机里打开vscode?

alt text

注:在存放项目目录的文件夹下打开终端,输入“code ./”表示在当前文件夹下打开vscode。

2、在项目目录中,src文件夹下存放的是源码文件,include文件夹下存放的是声明文件。

3、这里多写了个common.h用来声明经常被使用的函数和变量。

alt text

alt text

注:
    函数的extern是可以省略的,但是变量的尽量别省,这里在common.h文件中的内容是用来提供给多个.h文件使用。
    多个.c文件中要执行相同的函数和变量,就要在.h文件中声明,用extern关键字修饰函数和变量,这里extern的作用可以理解为他会去项目中的所有.c文件中找被extern修饰过的函数和变量的定义,然后在.c文件中实现。!!所以必须在其中一个.c文件中定义,在公用的.h文件中用extern来声明,然后在.c文件中来使用。要想使用全局变量和函数必须要用extern来声明。

4、最后执行.c文件

        -- 将src下的所有.c文件编译成可执行文件放在output里,在编译时用到的.h文件从include文件夹中寻找,最后执行可执行文件。

alt text

 tip:

alt text

alt text

alt text

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词