首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言_预处理

C语言_预处理 文章目录 C语言_预处理 0.引言 1.#include 2.#define (符号常量) 3....#error和#pragma预处理命令 6.#和##运算符 0.引言 C预处理是在程序被编译之前执行的,包括将其他文件包含进正在编译的文件,定义符号常量和宏,条件编译和有条件的执行预处理命令。...预处理命令都以 # 开头。 1.#include 功能:将指定文件的一个副本包含到命令所在位置上 形式:#include ​ #include"filename" 区别:查找文件的起始位置不同。...#define(宏) 宏 ,是#define预处理命令定义的一种标识符,宏的定义可以带实参,也可以不带。...#error和#pragma预处理命令 格式:#error tokens 功能:打印出包含命令中指定标记的信息,具体内容和系统的实现有关。 ​

1.1K10

C语言预处理

一、预处理符号 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循...ANSI C,其值为1,否则未定义 以上是C语言设置的一些预定义符号,是可以直接使用的,预定义符号在预处理阶段处理 二、#define定义常量 基本语法: #define name stuff 例子:...然后其他代码使用小写,这样可以很好的区分宏、函数以及其他代码 九、#undef #undef 可以移除一个宏定义,如果现存的一个名字需要被重新定义,那么就使用它进行移除 #undef NAME 十、命令行定义 许多C的编译器提供了在命令行中定义符号的能力...#endif //常量表达式由预处理器求值。 //如: #define __DEBUG__ 1 #if __DEBUG__ //.....c语言给我们很多预处理指令,我们工作的过程中可能会用到,大家自行查找学习 今日分享就到这里了~

10210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言预处理详解

    一、预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。...对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。...的区别 #define与typedef大体功能都是使用时给一个对象取一个别名,增强程序的可读性,但它们在使用时有以下几点区别: 1、原理不同 #define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的字符串替换...十四、其他预处理指令 #error //当预处理预处理遇到#error命令时停止编译并输出用户自定义的错误消息 #pragma//用于指示编译器完成一些特定的动作 //(1) #pragma message...参考书籍:《C语言深度解剖》

    32210

    C语言中的预处理

    1、 宏定义 预处理命令可以改变程序设计环境,提高编程效率,它们并不是 C 语言本身的组成部分,不能直接对 它们进行编译,必须在对程序进行编译之前,先对程序中这些特殊的命令进行“预处理” 。...C 语言提供的预处理功能有三种,分别为宏定义、文件包含和条件编译,下面将对它们进行简 单介绍。...在 C 语言中,宏分为 有参数和无参数两种。...无参宏的宏名后不带参数,其定义的一般形式为: #define 标识符 字符串; 其中“#”表示这是一条预处理命令(在 C 语言中凡是以“#”开头的均为预处理命令)“define”为宏定义命令,“标识符...4、 其他与处理命令 #error 等其他常用预处理命令 除了上面介绍的之外,C 语言还有#erroe、#line、#pragma 等其他常用的预处理命令,在很多 C 语言的 程序中也是经常可见的

    1.2K60

    C语言——环境与预处理

    链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中 2.2 编译的多个阶段 预处理 选项 gcc -E test.c -o test.i...预处理完成之后就停下来,预处理之后产生的结果都放在test.i文件中。...,我们再来观察一下 test.s 在观察 test.s 时我们发现很难读取 而其实在这个编译阶段是将C语言代码翻译成了汇编代码 语法分析 词法分析 语义分析 符号汇总 汇编 汇编就是把汇编代码转化成二进制的指令...当预处理器搜索 #define 定义的符号的时候,字符串常量的内容并不被搜索。...则无法再进行编译 #ifndef __TEST_H__ #define __TEST_H__ //头文件的内容 #endif 或者使用我们之前碰到过的代码 #pragma once 四.感谢大家观看 好了,C语言的程序环境和预处理就讲到这里

    6310

    C语言-预处理(#define、#if...)

    区分预处理代码 在C语言程序里,出现的#开头的代码段都属于预处理预处理:是在程序编译阶段就执行的代码段。...比如: 包含头文件的的代码 #include #include #include 下面列出C语言里常用的预处理代码段: 指令 描述 #define...#define 预处理指令: 宏定义和宏替换 2.1 宏替换基本用法和衔接符号使用示例 #include //C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.../include_file/app.h" //#include "/mnt/hgfs/linux-share-dir/linux_c/include_file/app.h" /* #include.../include_file目录下寻找头文件 #include "include_file/app.h" #include "/mnt/hgfs/linux-share-dir/linux_c/include_file

    89730

    c语言里面预处理的用法

    昨天分享了c语言里面的共用体、大小端模式、枚举的用法,今天我们来继续分享c语言里面预处理用法。争取在年假期间给大家分享完c语言里面的一些基本用法。...想必每个稍微写过一点c语言程序的都会写到如下面代码所示,这个就是表示预处理(主要是这个"#"符号): #include 2、理解一个我们自己写的一个程序到可执行程序的详细过程:...)->elf可执行程序 (4)源码.c->(预处理)->预处理过的.i源文件->(编译)->汇编文件.S->(汇编)->目标文件.o->(链接)->elf可执行程序 说明: 预处理预处理器...gcc -E xx.c -o xx.i 可以实现只预处理不编译。...4、C语言预处理代码实战: (1)、#include(#include 和#include ""的区别),我们先来看下面的代码演示,我先在root@ubuntu-virtual-machine:/mnt

    68410

    C语言基础】:预处理详解(一)

    一、预定义符号 在C语言中设置了许多的预定义符号,这些预定义符号是可以直接使用的,预定义符号也是在预处理阶段进行处理的。...FILE__ //进⾏编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C,...在gcc环境下运行可以看到它输出的是1,这表明gcc环境下的编译器是遵循ANSI C的。 预处理之后我们会发现,前面我们就学过,程序在预处理之后会把预定义指令给替换掉,这里结果也确实如此。...五、宏替换的规则 宏替换是C语言预处理器的一个重要功能,它在编译之前进行文本替换。...宏展开的顺序: 当宏参数中包含其他宏时,预处理器会按照它们在宏定义中出现的顺序进行替换。如果宏A中使用了宏B,而宏B又使用了宏C,那么预处理器首先会替换宏C,然后是宏B,最后是宏A。

    15510

    C语言基础】:预处理详解(二)

    嵌套文件包含 上期回顾: 【C语言基础】:预处理详解(一) 一、宏和函数的对比 宏通常被应有于执行简单的运算。 比如在两个数中找出较大的⼀个时,写成下面的宏,更有优势⼀些。...2.2 ##运算符 在C语言中,## 是预处理器的标记粘贴运算符。这个运算符可以将两个标识符拼接成一个更长的标识符。...定义宏 大多数C语言编译器允许使用命令行参数来定义宏。在GCC和Clang等编译器中,可以使用 -D 选项来定义宏。...for (int i = 0; i < SZ; i++) { printf("%d ", arr[i]); } return 0; } 五、条件编译 条件编译是C语言预处理器提供的一项功能...头文件包含的方式 在C语言中,头文件的包含方式主要有两种:直接包含和间接包含。这两种方式都是为了在当前文件中引入其他文件中定义的函数、变量、类型声明等,以便在当前文件中使用它们。

    13410

    C语言编程—预处理

    预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。...我们将把 C 预处理器(C Preprocessor)简写为 CPP。 所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。...下面列出了所有重要的预处理器指令: 预处理器实例 分析下面的实例来理解不同的指令。...预定义宏 ANSI C 定义了许多宏。在编程中您可以使用这些宏,但是不能直接修改这些预定义的宏。...中)被编译和执行时,它会产生下列结果: File :test.c Date :Jun 2 2012 Time :03:36:24 Line :8 ANSI :1 预处理器运算符 C 预处理器提供了下列的运算符来帮助您创建宏

    16250

    C语言】程序的编译、预处理

    而源程序通过编译和链接最终形成可执行程序,但是编译本身也分为几个阶段:预编译/预处理——编译——汇编 预处理 选项 gcc -E test.c -o test.i 预处理完成之后就停下来,预处理之后产生的结果都放在...__ //如果编译器遵循ANSI C,其值为1,否则未定义 这些预定义符号都是语言内置的 int main() { int i = 0; FILE* pf = fopen("log.txt", "w...#和## 开始之前,我们可以想一个问题:如何把参数插入到字符串中❓ 我们要先理解一下,在C语言中,下面两句代码是能达到相同结果的: #include int main() {...所以语言本身没法帮我们区分二者。 那我们平时的一个习惯是: 把宏名全部大写,函数名不要全部大写 #undef :这条指令用于移除一个宏定义。...这种替换的方式很简单:预处理器先删除这条指令,并用包含文件的内容替换。

    25020

    长文详解:C语言预处理命令

    预处理C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。...C语言提供多种预处理功能,主要处理#开始的预编译指令,如宏定义(#define)、文件包含(#include)、条件编译(#ifdef)等。...合理使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。 二 宏定义 C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为宏的标识符称为“宏名”。...(3) C语言C++语言连接结果不同,可能是在进行编译时,C++语言将全局变量默认为强符号,所以连接出错。C语言则依照是否初始化进行强弱的判断的(仅供参考)。...五 小结 预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的。程序员在程序中用预处理命令来调用这些功能。

    2.8K10

    C语言(16)----预处理中的宏以及预处理指令

    预处理作为编译的预先准备阶段,其中的宏是一种由预处理器处理的指令或代码片段。宏的基本定义由#define来完成。通常为了区分变量名和函数,宏名通常使用大写字母串来书写。...预处理阶段:在编译之前的预处理阶段,预处理器会扫描代码中的宏调用,并将其替换为宏定义的内容。 宏展开:预处理器将宏调用展开为其定义的内容,包括参数的替换。...宏: 预处理阶段替换:宏是在预处理阶段被替换为其定义的内容,只需要直接运算,而不是像函数那样需要先调用再运算再返回。...在C语言中,条件编译通常使用预处理指令#if、#ifdef、#ifndef、#elif、#else和#endif来实现。...预处理指令 除了上述已经基本介绍完毕的预处理指令, 常见的预处理指令还包括这些: #undef:取消宏定义 #error:生成错误消息 #warning:生成警告消息 #pragma:编译器指令 #line

    11410

    C语言进阶-程序环境和预处理

    目录 前言 程序的翻译环境和执行环境 翻译环境 编译+链接 ​翻译阶段详解 预编译 编译 汇编 链接 运行环境 预处理详解 预定义符号 #define #define 定义标识符 #define 定义宏...宏和函数命名约定 #undef 命令行定义 条件编译 条件编译类型 文件包含 头文件包含方式 嵌套文件包含 ---- 前言 ---- 本章主要讲解点: 代码编译链接变成可执行程序程序的过程 掌握学习各种预处理知识...(编译完成之后就停下来) 注:编译后生成汇编代码,结果保存在test.s中 汇编 该阶段执行内容: 形成符号表; 图示: 选项 gcc -c test.c(汇编完成之后就停下来)...:(int *)malloc(10 * sizeof(int)); 注:非常便利,简直是奇效~ 宏和函数优劣表 图片 宏和函数命名约定 一般来讲函数的宏的使用语法很相似(语言本身没法区分二者...#endif //常量表达式由预处理器求值 示例:作注释符 多个分支的条件编译 #if defined(symbol) #ifdef symbol #if !

    63450

    C语言进阶——程序环境和预处理

    除程序环境外,C/C++在预处理阶段还有各式各样的预处理指令等着我们去发掘,一起来看看吧!...C语言中还提供了一组条件编译函数,这些函数能决定后续语句是否需要编译。...推荐了解其他预处理指令 #error #pragma #line  …… ---- 总结   以上就是关于C语言程序环境和预处理的所有内容了,如果你在看完此文后能对C语言代码的运行有一个新的认识,那么本文就值了...如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正   写在最后:本文结束后,我们C语言的学习就可以宣布毕业了!...当然,只是C语言整体知识系列划上了句号,其他文章还是会继续更新下去的, 比如 数据结构 | C 这个系列,还有高深一些的 C语言高阶——函数栈帧的创建和销毁 ,其他好玩的小程序、有意义的题解等。

    23320
    领券