宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用

简介: 宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用

1、在C语言预处理阶段,编译器首先对代码的处理时:先去注释,再宏替换。


2、在源文件的任何地方,宏都是可以定义的,与是否在函数内外无关。


3、宏的作用范围是:从定义处开始,往后的直到程序结束都是有效的。可以使用#undef取消宏定义的。


4、#ifdef:判定的是宏是否被定义,与宏定义的值是真是假没有关系。


5、#if:判定的不仅是这个宏是否被定义,还要判定定义的宏的值是真是假。


6、

头文件包含:


(1)#include 本质是把头文件中的相关内容,直接拷贝到源文件中。


(2)所有的头文件包含,都必须带上条件编译,防止被重复包含,即重复拷贝,影响编译效率。


所有的头文件都推荐写入下面代码:



意思是只有第一次检测的时候xxx没有被定义,然后定义xxx再进入#ifdef和#endif内部,因为此时xxx已经被定义了,所以往后的每一次#ifndef都不成立,所以不会进到内部,所以能有效地避免了头文件的重复包含。


#error



#pragma:



对比#error和#pragma


#error就是通过报错的方式直接阻止编译器完成编译。


#pragma message()作用:可以用来进行对代码中特定的符号(比如其他宏定义)进行是否存在:进行编译时消息提醒。


相邻字符串具有自动连接属性。



#的作用



把一个整数转换成字符串可以通过以下做法:



但是不能通过以下方式转换:



##的作用:


将##相连的两个符号(不是字符串),连接成为一个符号。


比如说我们要用科学计数法计算一个数正常来说应该用以下的写法:



但是我们为了更方便一些,可以利用##定义一个宏:


相关文章
|
Serverless C++
8语句
8语句
102 1
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
165212 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
9月前
|
Ubuntu Linux Docker
如何在Ubuntu 20.04系统中安装Docker
安装 Docker 引擎的步骤如下:首先更新系统包索引 (`sudo apt update`),安装必要依赖包 (`apt-transport-https` 等),添加 Docker 官方 GPG 密钥及 APT 仓库。接着再次更新包索引并安装 Docker 引擎及相关工具 (`docker-ce` 等)。最后启动 Docker 服务并设置开机自启,通过 `docker --version` 和运行测试容器 (`sudo docker run hello-world`) 验证安装是否成功。
3690 0
|
安全 Java Linux
docker阿里云镜像加速
我们都知道因为某些原因我们访问外网都是比较慢的,比如我们使用maven下载依赖时是一个道理,同样的使用docker从docker.hub上下载镜像也是比较慢的。针对这种访问官网比较慢的情况有两种方案,第一种就是使用国内的仓库,第二种就是使用一个加速器。这里我们配置docker的镜像加速从来来实现提速。
14537 1
docker阿里云镜像加速
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
2889 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
存储 人工智能 运维
Forrester Wave:阿里云持续领跑中国公共云市场
全球研究和咨询公司Forrester发布了中国云计算Forrester Wave报告,称AI已成为驱动企业上云的新因素,中国公共云市场正在快速成长成熟。阿里云等8家云计算公司入围 2024 Forrester Wave报告,在全部32项评测中阿里云揽获23项最高分,整体位居“领导者象限”。
【中级软件设计师】—(下午题)试题一精讲总结(四十)
【中级软件设计师】—(下午题)试题一精讲总结(四十)
|
JavaScript Ubuntu Shell
Ubuntu上安装任意版本nodejs方法
通过以上步骤,您可以在Ubuntu系统上灵活地安装和管理不同版本的Node.js。这种方法让开发者能够根据不同项目的需要选择合适的Node.js版本,同时也使版本切换变得非常方便。而且,nvm能够为每个项目独立管理依赖,从而确保不同项目之间的环境隔离,增强了开发环境的稳定性和可维护性。
4191 2
|
开发工具 C++ git
QT基础【1-开发环境安装】
QT基础【1-开发环境安装】
|
JavaScript 前端开发
DOM操作有哪些方法可以改变元素的样式?
【6月更文挑战第30天】DOM操作有哪些方法可以改变元素的样式?
221 2