C++一些基本概念总结【面向过程篇】——编译预处理

C++ 预处理、编译、汇编、链接 一个C++程序一般需要经过以下几个步骤才能成为可执行程序: 那么,在以上的每一步中,编译器到底做了哪些工作呢? 一、编译器预处理 C++编译器自带预处理器,在程序编译之前,由预处理器对C++源程序完成预处理工作。预处理主要将源程序中的宏定义指令、条件编译指令、头文件包含指令以及特殊符号完成相应的替换工作。 预处理指令#include用于包含头文件,有两种形式:#include ,#in 阅读详情

编译预处理


作用:编译器在第一遍扫描之前所做的工作,处理完预处理部分再编译。

包括:宏定义、包含文件处理、条件编译等。


(1)文件包含:#include 可以去官方指南:http://www.cplusplus.com/reference/

              cin、cout:iostream.h

              printf、scanf:stdio.h

              <>:在包含文件目录中去找,系统默认头文件

              “”:去当前的源文件找,比如用户自定义的文件。找不到再去包含目录

            允许包含嵌套


(2)条件编译:#if #ifndef #ifdef #endif #undef:注释掉一些代码


             #ifdef 标识符

                         1  如果标识符已被#define定义过,则对1进行编译

            #else 可以省略

                         2 

            #endif

 

           #ifndef与上面类似

 

           #if 常量表达式

                    1  表达式为真,对1编译

           #else

                    2

           #endif

 

(3)布局控制:#progma:非常规的控制流信息


(4)宏替换:

              不带参数:#define 宏名 字符串

                       其中,字符串可以是常数,表达式,格式串等

              取消宏:#undef

             可以宏嵌套

             带参数:#define 宏名(形参表) 字符串

             内联函数:将一个函数定义成inline后,每次调用就直接替换成函数体中的代码,省去函数调用,传参,返回等操作时间,加快执行速度


(5)其他:

#error 出错信息:遇到则停止编译

#line

如何得到编译器预处理搜索到的头文件位置?如何得到编译器预处理头文件搜索路径?/usr/bin/cpp是C++相关的程序吗?预处理?gcc 1.c和g++ 1.c预处理有什么区别? gcc可以通过-MD命令获取编译的头文件依赖关系。例如gcc -MD demo.c可以得到类似如下:...... 阅读详情

相关推荐

编译原理 实验1 编译预处理

预处理器不仅是编译过程中最初的一环,更是整个构建过程的重要基础。良好的预处理可以减少编译时的错误,也为后续的编译分析提供了清晰、准确的输入。通过对预处理器的理解与应用,程序员能够写出更加灵活和维护性强的代码,提升编程效率。

2301_76979886的博客 2397

三种编程方式:面向过程编程(Python)、面向数据编程(TensorFlow)、面向约束编程(z3)

三种编程方式 面向过程编程(C语言)、面向数据编程(TensorFlow)、面向约束编程(z3) 一、面向过程编程 (一). 面向过程 面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后把这些步骤实现。 (二).案例 1. 鸡兔同笼 《孙子算经》: 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? 列方程式:设鸡有chick只,兔有rabbit只 chick + rabbit = 35 2 * chick + 4 * rabbit = 94 代码 # 1. 设置头、脚

TysonSir的博客 2576

C/C++编程笔记:C语言预处理器(CPP)与预处理命令

C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。 我们将把 C 预处理器(C Preprocessor)简写为 CPP。 所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令: #define 定义宏 #include ...

C语言C++学习俱乐部:765860056 1840

面向过程编程和面向对象编程的区别

面向过程编程 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操作是分离的。 面向对象编程 面向对象编程是将事物对象化,通过与对象进行通信来解决问题。面向对象编程,数据和对数据的操作是绑定在一起的。

辉 1万+

C/C++编译预处理指令

众所周知,你的程序编译前要做的事就是扫描源代码,对其做初步的转换,产生新的源代码提供给编译器,这个过程就叫编译预处理。这个处理过程由预处理器来完成,预处理器是在程序真正运行前由编译器调用的预处理程序。         常见的预处理有以下三种:     文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。      宏替换: #define,这是最

Cobing Liu 6019

【编译、链接、装载一】预处理、编译、汇编、链接

预处理、编译、汇编、链接

junxuezheng的博客 6659

c++自定义类型和预处理

struct,内部初始化变量时,不能用()。 struct data { int x = 12; float f = 122.5f; int *pi = &x; }; data da; cout << da.f << endl; data *dap = new data;//使用*的话需要初始化 cout << dap->f...

li_unit的博客 280

OLED的字模提取(保姆级)---基于PCtoLCD2013

做为一个刚刚开始接触编程不久的白菜,这个OLED想做一个信息显示,可是商家给我的例程里就是88,816两种字体的格式,我的屏幕是0.91寸的8*16的字体显示上感觉特别丢丢儿小,我就想整个大的,哎,只怪直接学习习惯不好,总是学一半,绕了好大一圈,才搞好,想写一篇博客,时刻提醒踏实学习,第一次写博客,小白一枚,勿喷。。 OLED屏幕驱动程序功能 我们对Markdown编辑器进行了一些功能拓展与语法支...

qq_44886611的博客 7781

面向过程常用的编程方法

一、面向过程 发现问题,以解决问题的过程为中心的编程方法。 例如要把大象装到冰箱里,分为三步 第一步:打开冰箱门 第二步:把大象塞进去 第三步:关上冰箱门 关注点,在于解决问题的过程和实现的功能 二、编程方法基础 1.程序的三种基本结构: 结构化程序设计非常强调某个功能的算法.算法由一系列操作组成. 任何简单或复杂的算法都可以由顺序结构,选择结构,循环结构这三种基本结构来构...

weixin_49945069的博客 3034

AI变现案例实战系列4:AI数字员工团队——用OpenClaw搭建6个智能体,自动运营你的赚钱系统

摘要:谷歌AI产品经理Shubham Saboo利用OpenClaw搭建6人AI团队,实现内容创作、技术开发等任务自动化,每月成本不足400美元。文章对比阿里云和Windows本地两种部署方案,提供详细配置指南。通过多Agent架构实现物理隔离与精准协作,可创建6个专业AI角色(如研究员、运营、工程师等),每个Agent专注单一任务,避免记忆负担和上下文污染问题。阿里云方案适合长期稳定运行,Windows本地部署则适合零成本测试。最终可组建高效AI团队,实现7x24小时无人值守运营。(149字)

小明的博客 1141

DIKW模型实战:用Obsidian打造个人知识库的5个关键步骤

本文详细介绍了如何利用DIKW模型在Obsidian中构建高效个人知识库的5个关键步骤,从数据收集到智慧应用的全流程实践。通过标记系统、信息加工引擎和知识结晶方法,帮助知识工作者实现从原始数据到决策智慧的认知跃迁,提升个人知识管理效率。

gamma的博客 576

什么是面向过程编程?什么是面向对象编程?

可能有很多地小伙伴在开始学习编程语言或者是在学习完C语言之后在学习开始学习Java、Python等语言的时候,老师说的第一句话就是:“这门语言跟C语言不一样,它是面向对象的编程语言”,可是究竟什么是面向过程?什么是面向对象呢?川宝在这里带大家通俗易懂地理解一下: 先来看看定义: 面向过程:面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用。 面向对象:面向对象则是一种以对象为中心的编程思想,通过分析问题,分解出一个一个的对象,然后通过

weixin_60911831的博客 2942

Isaac Gym摄像头数据获取全攻略:从CPU到GPU,教你实时显示RGB与深度图

本文详细介绍了在Isaac Gym中获取摄像头数据的两种高效方案:CPU模式与GPU张量模式。通过实战代码示例,展示了从摄像头配置、数据获取到实时可视化RGB与深度图的全流程,帮助开发者优化机器人仿真与计算机视觉应用的性能。特别强调了GPU模式下的零拷贝访问与张量运算优势,适用于需要低延迟处理的场景。

weixin_29056701的博客 387

.cpp与.h文件的关系详解(预处理、编译、汇编、链接)

C++程序通常分为头文件(.h)和源文件(.cpp):头文件存放函数声明、类定义等接口,源文件存放具体实现。编译过程包括预处理、编译、汇编和链接四个步骤,其中链接器负责将各目标文件中的符号引用与定义进行匹配。关键点在于:1)头文件仅提供声明,源文件提供实现;2)编译器检查语法但不关心实现位置;3)链接阶段通过符号表匹配引用和定义;4)遵循单一定义规则,避免同名冲突。这种分离方式提高了代码的模块化和可维护性,同时通过分步编译提升了效率。

weixin_44115575的博客 1万+

从零解析特斯拉线圈:谐振变压器的核心原理与DIY实践

本文深入解析特斯拉线圈的工作原理与DIY实践,从LC振荡电路到电磁耦合,详细介绍了谐振变压器的核心原理。通过材料清单、绕制技巧和安全指南,帮助爱好者从零开始打造迷你闪电发生器,体验高压电子实验的独特魅力。

weixin_33670786的博客 491

【知识分享】什么是同轴传输线结构?

同轴传输线的几何形状由中心导体组,嵌在介电材料(Dielectric)中,并且,被连续的外导体所包围,也被称为屏蔽(Shield)。内外导体有相同的几何中心轴,因此得名同轴(Coaxial)。

一只豌豆象的博客 2372

C/C++:编译全过程——预处理、编译、汇编、链接(包含预处理指令:宏定义,文件包括、条件编译)

一、前言 C/C++的编译过程包含了四个步骤: 1. 预处理(Preprocessing) 2. 编译(Compilation) 3. 汇编(Assemble) 4..链接(Linking) 二、预处理 预处理阶段主要处理一些预处理指令,比如文件包括、宏定义、条件编译。 1.文件包括 文件包括就是将所有的#include...

JacksonKim的博客 2万+

微信小程序 - 解决支付报错 requestPayment:fail access denied (微信支付提示错误requestPayment:拒绝访问失败,真机运行测试或打包编译上线后报错问题)

微信小程序,微信支付,wx.requestPayment,微信小程序支付报错requestPayment:fail access denied,调不起微信,无法唤起支付弹窗,支付失败,支付权限没问题,小程序上线后支付报错,小程序真机测试支付报错,微信小程序苹果ios系统手机无法支付,小程序发布上线后支付报错,本地测试没问题,拒绝访问失败,小程序调起支付API requestPayment:fail:access denied微信开发者工具正常支付,权限没问题,微信公众平台,依旧报错怎么办,检查了appid都

🏆 前端领域优质创作者 1万+

C++ 中到底是应该include .h文件还是应该include .cpp文件

在阅读一个较大的解决方案中,对于其他文件夹下的.h和.cpp文件,有时候#include“XXX.h”文件,有时候是#include“XXX.cpp”文件,而且二者还不能更换。下面就好好分析一下他们二者的区别。 文章目录测试测试:XXX.h和XXX.cpp有没有在解决方案里的差别探究预处理(简单替换)编译和优化(高级语言->汇编语言)生成目标文件(汇编语言->二进制机器语言)链接(汇总成一个目标文件)外部文件夹的h和cpp文件 测试 测试:XXX.h和XXX.cpp有没有在解决方案里的差别   

Be busy living or busy dying 1万+

基于ESM3微调的抗菌肽生成器:技术方案与实现

基于ESM3微调的抗菌肽生成器:技术方案与实现 摘要 本文提出了一种基于ESM3蛋白质语言模型的抗菌肽生成框架,采用两阶段训练策略:先在151万肽序列上预训练,再在1.3万抗菌肽数据上微调。模型能够生成具有合理长度分布、低重复率且高新颖性的抗菌肽序列。文章详细介绍了数据预处理流程、模型架构设计、训练策略及评估方法,为抗菌肽的理性设计提供了有效的计算工具。实验结果表明,该方法生成的抗菌肽序列在保持生物活性的同时具有较高的结构多样性。 关键词:抗菌肽设计;蛋白质语言模型;ESM3;深度学习;序列生成

huanghm88的专栏 175

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++编译前的预处理解析

本文摘要: C++预处理阶段是编译流程的第一步,负责处理以#开头的指令,如#include、#define等,通过文本替换、文件拼接和条件编译等操作生成最终参与编译的代码。核心内容包括: 预处理作用:在编译前修改代码文本,支持代码复用(#include)、宏替换(#define)和条件编译(#ifdef)。 常用指令: #include:插入文件内容,分标准库(<>)和自定义文件("")两种形式。 #define:定义宏(常量或函数式替换),需注意括号避免运算错误。 条件编译

qq_39980997的博客 1573

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

gcc 如何编译cpp文件啊

文章目录gcc 如何编译cpp文件啊 gcc 如何编译cpp文件啊 /* hello.c */ #include <iostream> using namespace std; int main() { cout << "hello cpp"<<endl; return 1; }   gcc A.cpp 他找不到一些东西啊   那我链接到标准C++库看看 gcc A.cpp -lstdc++ 这样成功了哦 ..

fgh123的博客 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++编译预处理

C++的预处理是编译器在编译源程序之前,先由预处理器处理预处理指令,由于在C++源程序中有各种编译命令,而这些编译命令由于是在程序被正常编译之前执行的,故称为预处理命令(或指令)。预编译命令用来扩充C++程序设计的环境,使得程序书写变得更加简练和清晰。C++提供的预处理功能主要有以下3种:宏定义命令。文件包含命令。条件编译命令。 为了与一般C++语句相区别,编译预处理命令以符号#开头,并且末尾不...

CX的博客 1955

C++:C++编译过程:看完还不懂C++编译过程来捶我

C++:C++编译过程

C++ JAVA的专栏 1万+

详解C/C++代码的预处理、编译、汇编、链接全过程

通过一个简易C++代码工程,详细介绍C++源代码预处理、编译、汇编、链接的全过程。

hypc9709的博客 4205

在linux下使用gcc/g++编译.h .cpp文件

1.gcc编译C源码的四个步骤: 预处理->编译->汇编->链接(test.c test.h => test.i => test.s => test.o => test) 1)预处理 gcc -E test.c -o test.i 2)编译 gcc -S test.i -o test.s 3)汇编 gcc -c test.s -o test.o 4)链接 gcc test.o -o test 执行可执行文件test ./t...

不知小姐 1万+
上一篇: C++一些基本概念总结【面向过程篇】——函数
下一篇: C++一些基本概念总结【面向过程篇】——数组
code_caq
博客等级 码龄11年 112粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值