程序的环境和预处理#define #ifdefine

文章目录


在这里插入图片描述
在这里插入图片描述
机器指令即二进制指令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
编译本身也分为几个阶段

在这里插入图片描述
linux展示
gcc是linux下的一个编译器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

预编译 预处理做的事情

在这里插入图片描述

把#include<>里面的内容执行了

在这里插入图片描述
在这里插入图片描述

注释删除,使用空格替换注释

在这里插入图片描述
在这里插入图片描述

define 把符号统统替换为值

在这里插入图片描述
在这里插入图片描述

编译阶段做的事情

在这里插入图片描述
符号汇总,函数名,全局变量
在这里插入图片描述

#汇编做的事情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

链接做的事情

在这里插入图片描述
在这里插入图片描述
vim练级攻略 陈皓 库壳

运行环境

在这里插入图片描述
在这里插入图片描述

预处理(预处理)详解

预定义符号

在这里插入图片描述

FILE

代码所在文件的路径+名称
在这里插入图片描述

LINE

文件当前的行号
在这里插入图片描述

DATE TIME

代码走到这的日期和时间在这里插入图片描述

写日志文件

在这里插入图片描述
在这里插入图片描述

FUNCTION

打印函数名
在这里插入图片描述
在这里插入图片描述

#define预处理指令

#define 是在预处理阶段进行处理的所以叫预处理指令
#开头的都是预处理指令
在这里插入图片描述

#define定义标识符 反斜杠\ (续行符)

在这里插入图片描述
在这里插入图片描述

符号可以是整数,字符串等等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样写for的循环体内容就是 空语句
在这里插入图片描述
不要加分号
在这里插入图片描述

#define定义宏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
写宏的时候不要吝啬括号,宏的参数不是计算好之后传进去,而不是算好之后替换进去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#define替换规则

宏的参数不是计算好之后传进去,而不是算好之后替换进去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#和##

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
宏的参数不是计算好之后传进去,是彻彻底底替换进去
在这里插入图片描述

宏和函数比

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

undef

在这里插入图片描述

在这里插入图片描述

命令行定义

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

条件编译

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常见的条件编译指令

在这里插入图片描述
在这里插入图片描述

#if #endif

在这里插入图片描述

#if #elif #else #endif

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#ifdef #ifndef #if defined #if !defined

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

嵌套指令

在这里插入图片描述

文件包含 #include

把include的文件内容放过来,把文件的内容复制过来
在这里插入图片描述
自己创建的头文件,自定义的头文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

嵌套文件包含 头文件重复包含

在这里插入图片描述
test1.h包含了common.h,test2.h包含了common.h
test.h包含了test1.h,test2.h,则test.h包含了common.h两次
在这里插入图片描述
在这里插入图片描述

解决方法
在这里插入图片描述
在这里插入图片描述
编译后只被包含一次
在这里插入图片描述
解决方法二
在这里插入图片描述

其它预处理指令

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/686000.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java解决垂直鉴权问题(对垂直权限进行校验)

Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09; 文章目录 Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09;前言一、垂直鉴权是什么&#xff1f;二、实现过程1.新建接口权限菜单映射表2.项目初始化时加载接口菜单映射关系3.自定义过滤器拦截…

Amazon SQS使用

Amazon SQS 服务(Amazon Simple Queue Service)。Amazon SQS 允许生产器向队列发送消息。然后&#xff0c;消息会存储在 SQS 队列中。当使用者准备好处理新消息时&#xff0c;使用者可以从队列中轮询这些消息。应用程序、微服务和多个 AWS 服务可以担当生产器或使用者的角色。 …

重生我是嵌入式大能之串口调试UART

什么是串口 串口是一种在数据通讯中广泛使用的通讯接口&#xff0c;通常我们叫做UART (通用异步收发传输器Universal Asynchronous Receiver/Transmitter)&#xff0c;其具有数据传输速度稳定、可靠性高、适用范围广等优点。在嵌入式系统中&#xff0c;串口常用于与外部设备进…

C++内存分区

代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a;存放全局变量和静态变量以及常量 栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量等 堆区&#xff1a;由程序员分配和释放&#xff0c;若…

【数据结构与算法】常见的排序算法

文章目录 排序的概念冒泡排序&#xff08;Bubble Sort&#xff09;插入排序&#xff08;Insert Sort&#xff09;选择排序&#xff08;Select Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;写法一写法二 快速排序&#xff08;Quick Sort&#xff09;hoare版本&a…

鸿蒙内核源码分析(文件句柄篇) | 你为什么叫句柄

句柄 | handle int open(const char* pathname,int flags); ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count); int close(int fd);只要写过应用程序代码操作过文件不会陌生这几个函数,文件操作的几个关键步骤嘛,跟把大…

【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5

功能介绍 用户端&#xff1a;精准分类、支持家政、维修、万能服务、一口价、报价、线上、各类家政服务、优惠专区、师傅入驻、商家入驻、我的需求、补费明细、我的投诉 师傅端&#xff1a;接单池、消息通知、接单管理、今日订单、师傅入驻、我的钱包、实名认证 商家端&#…

Python中的多进程、多线程、协程

Python中的多线程、多进程、协程 一、概述 1. 多线程Thread &#xff08;threading&#xff09;&#xff1a; 优点&#xff1a;同一个进程中可以启动多个线程&#xff0c;充分利用IO时&#xff0c;cpu进行等待的时间缺点&#xff1a;相对于进程&#xff0c;多线程只能并发执…

HTML5+CSS3+JS小实例:旋转渐变光标

实例:旋转渐变光标 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale…

远程桌面连接不上怎么连服务器,原因是什么?如何解决?

远程桌面连接不上怎么连服务器&#xff0c;原因是什么&#xff1f;如何解决&#xff1f; 面对远程桌面连接不上的困境&#xff0c;我们有办法&#xff01; 当你尝试通过远程桌面连接服务器&#xff0c;但遭遇连接失败的挫折时&#xff0c;不要慌张。这种情况可能由多种原因引起…

第8章.STM32开发方式(库函数)介绍

目录 0. 《STM32单片机自学教程》专栏 8.1 单片机的开发方式 8.1.1 直接操作寄存器 8.1.2 使用库函数 8.2 STM32的库函数 8.2.1 标准外设库(STD库) 8.2.2 HAL库 8.2.3 LL库 0. 《STM32单片机自学教程》专栏 本文作为专栏《STM32单片机自学教程》专栏其中的一…

docker安装elasticsearch:7.17.21

docker安装elasticsearch:7.17.21 下载对应版本的docker镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.21启动容器 docker run --name elasticsearch-test -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -t docker.elastic.…