c语言的预编译指令是什么,c语言预编译指令有哪些?
c语言预编译指令有哪些?
预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理器指令有:文件包含、条件编译、布局控制和宏替换4种。
文件包含
#include是一种最为常见的预处理,作为文件的引用。
条件编译
#if、#ifndef等,主要是进行预编译时进行有选择的挑选,注释掉一些指定的代码,以达到版本控制、防止对文件重复包含的功能。
布局控制
#pragma,这也是我们应用与处理的一个重要部分,主要功能是为编译程序提出非常规的控制流信息。
宏替换
#define,这是最常用的用法,它可以定义符号常量、函数功能、重新命名、字符串的拼接等各种功能。
常见的预处理指令
#define宏定义
#undef未定义宏
#include文本包含
#ifdef如果宏被定义就进行编译
#ifndef如果宏未被定义就进行编译
#endif结束编译块的控制
#if表达式非零就对代码进行编译
#else
#elif这是一种#else和#if的组合选项
#line改变当前的行数和文件名称
#error输出一个错误信息
#pragma为编译程序提供非常规的控制流信息。
预定义标识符
为了处理一些有用的信息,预处理定义了一些预处理标识符,虽然各种编译器的预处理标识符不尽相同,但他们都会处理下面四种:
__FILE__:正在编译的文件名
__LINE__:正在编译的文件的行号
__DATE__:编译时刻的日期字符串
__TIME__:编译时刻的时间字符串
注意:
#include
编译器从标准库路径开始搜索。
#include “stdio.h”
编译器从用户的工作路径开始搜索。
#error this code is c,
not python.
在预编译时,会报错,如上信息。
c语言的预编译指令是什么,c语言预编译指令有哪些?相关推荐
- c语言错误c1010怎么办,fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h...
一.概念: 1.预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个"预编译头文件"的时候,则自动从这个编译 ...
- c语言中字符串比较指令,如何在C条件预处理器指令中比较字符串
CAVEAT:并非所有的编译器都以相同的方式实现C ++ 11规范.以下代码可在我测试过的编译器中使用,而许多注释者使用其他编译器. 引用Shafik Yaghmour的回答:在编译时计算C字符串的长 ...
- 中山大学编译原理实验——实现PL0语言的编译程序(无坑有缩进版)
PL0-Compiler 代码传送门 ps:吐槽一下,老师给的代码实在是太烂了.又没缩进又多编译错误,除此之外还有很多细节漏掉关键字,总之就很多坑,所以这里发一个无坑带缩进版,方便大家学习. 中山大学 ...
- c语言编译过程详解,预处理,编译,汇编,链接(干货满满)
楔子 我们在各自的电脑上写下代码,得明白我们代码究竟是如何产生的,不想了解1,0什么的,但这几个环节必须掌握吧. 我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令 ...
- -i 可以编译添加多个_C语言的编译过程
大家对C语言的编译过程可能有个大致的理解,但是,详细到每一步具体都干了啥,可能有的人不是很清楚啦,也包括我,要不然,就不会做笔记了,哈哈... 0.主要步骤 ① 步骤 编写源程序(.c) → 预处理 ...
- 定义指令时“控制器”,“链接”和“编译”函数之间的区别
本文翻译自:Difference between the 'controller', 'link' and 'compile' functions when defining a directive ...
- c语言反编译_Gacrux:基于C语言的可自定义PE加载恶意软件
写在前面的话 近期,我对这款名为Gacrux的恶意软件样本进行了分析.考虑到这两个样本文件的来源,我无法直接跟大家共享文件的哈希或直接公开样本文件,不过根据本文所提供的信息,大家可以轻松识别出这款恶意 ...
- 语言五子棋无ai程序框图_微软多语言预训练模型T-ULRv2登顶XTREME排行榜
编者按:为进一步实现用 AI 赋能用户体验,微软正在不断拓展多语言模型的边界.近日,由微软图灵团队与微软亚洲研究院联合探索的最新跨语言研究成果--多语言预训练模型 T-ULRv2,登顶 XTREME ...
- 编译原理大作业-PL0语言编译器
编译原理大作业-PL0语言编译器 一.实验目的 二.源码说明 1.头文件pl0.h (1 词法分析主要数据结构(通过enum symbol类实现) 1.保留字(13+4个): 2.运算符及界符(16+ ...
最新文章
- 【NetApp】IO读写和WAFL的工作原理
- wxWidgets:wxMaximizeEvent类用法
- linux内存管理策略,Glibc内存管理—ptmalloc内存分配策略(1)
- 如何对Javascript代码进行二次压缩(混淆)
- python最大正方形的面积_LeetCode 221. 最大正方形 | Python
- 详解自动驾驶仿真框架OpenCDA: An Open Cooperative Driving Automation Framework Integrated with Co-Simulation
- windows7+tomcat7+nginx1.11.3 +memcached
- mysql启动日志指令_简单整理MySQL的日志操作命令
- python中文显示不出来_彻底解决Python里matplotlib不显示中文的问题
- 深入理解Solaris内核中互斥锁(mutex)与条件变量(condvar)之协同工作原理
- ospf 几种LSA类型的总结
- PostgreSQL之Foreign Data Wrappers使用指南
- PHP:同时发送多个异步ajax请求,但数据却是按同步顺序返回
- Microsoft Project项目管理实践
- 山东工商学院第五届ACM趣味编程大赛感想
- SpringBoot 实现AOP的简单测试demo
- 华为路由交换学习篇-路由
- FrameBuffer操作
- 最新多线程图解韩顺平老师2021
- 函数:GetDistance,计算两个经度纬度之间距离