C语言从入门到精通第14天(C语言预处理)

这篇具有很好参考价值的文章主要介绍了C语言从入门到精通第14天(C语言预处理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

预处理概述

在前面我们已经对C语言的基础语法知识有所了解了,每次进行程序的编写之前,我们会使用#include命令去导入我们的库函数,而这种以#号开头的命令称为预处理命令。

C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能编写地程序便于阅读、修改、调试、移植,也有利于模块化程序设计。

这个预处理命令时怎样去运行的呢?首先我们要知道的是我们编译器中的文件中的内容。

C语言从入门到精通第14天(C语言预处理)

这里显示了我们用的输出输出函数库,当我们导入这个库函数时,程序会自动的进行预处理,将我们这个stdio.h文件中的内容加载到我们的.c文件中。

宏定义

在C语言程序中允许用一个标识符来表示一个字符串,称为”宏“。被定义为“宏”地标识符称为宏名。在编译预处理时对程序中所有出现的“宏名”,都用宏定义中的字符串去进行文本替换,这称为“宏代换”或“宏展开”。

语法为:

#define 标识符 字符串

这里的字符串可以是常量也可以是表达式。

例如:

#define PI 3.14

// 例举一个函数求面积

int main(){
    float r,area;
    printf("please input:");
    scanf("%f",&r);
    
    area = PI * r*r;
    printf("%f",area);

    return 0;
}

这里我们使用的PI,但是程序仍能够给出正确的结果,这就是经过了预处理。在CLion的Terminal下输出命令:gcc -E main.c -o main.i,然后再同一个文件夹下找到我们编译好的main.i文件。

C语言从入门到精通第14天(C语言预处理)

用记事本打开翻到最下面,可以发现我们的PI变成了3.14,如下:

C语言从入门到精通第14天(C语言预处理)

条件编译

常用的条件编译指令文章来源地址https://www.toymoban.com/news/detail-426226.html

条件编译指令 说明
#if 如果条件为真,则执行相应操作
#elif 如果前面条件为假,而该条件为真,则执行相应操作
#else 如果前面条件均为假,则执行相应操作
#endif 结束相应的条件编译指令
#ifdef 如果该宏已经定义,则执行相应操作
#ifndef 如果该宏没有定义,则执行相应操作

到了这里,关于C语言从入门到精通第14天(C语言预处理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】程序环境和预处理|预处理详解|定义宏(下)

    主页:114514的代码大冒 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言 2.5带副作用的宏参数 2.6宏和函数的对比 3#undef ​编辑 4 命令行定义 5 条件编译 6 文件包含 总结 咱们书接上回 2.5带副作用的宏参数 先来

    2024年01月17日
    浏览(59)
  • C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)

    先简单了解一下程序环境,然后详细总结翻译环境里的编译和链接,然后在总结编译预处理。 在 ANSI C 的任何一种实现中,存在两个不同的环境 翻译环境:这个环境中源代码被转换为可执行的机器指令。 执行环境:执行二进制代码。 计算机如何执行二进制指令? 我们写的C语

    2024年02月09日
    浏览(57)
  • 【C语言】预处理

    在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码。 1.翻译环境 组成一个程序的每个源文件通过编译过程分别转换成目标代码 每个目标文件由链接器(linker)捆绑在

    2024年02月17日
    浏览(69)
  • 详解C语言—预处理

    目录 一、预处理 1、预定义符号介绍 2、预处理指令 #define #define 定义标识符:  #define 定义宏: #define 替换规则 3、预处理操作符# 4、预处理操作符## 5、带副作用的宏参数 6、宏和函数对比 二、命名约定 三、预处理指令 #undef 四、命令行定义 五、条件编译  1、单分支#if:

    2024年02月08日
    浏览(57)
  • C语言预处理详解

    上一篇博客中我们讲了C语言的编译与链接,在编译过程中有三个小阶段:预处理、编译、汇编。 本篇博客将详细讲述预处理部分的有关知识点 。 在C语言中,C语言本身设置了⼀些预定义符号,可以直接使⽤ ,预定义符号的处理也是在预处理期间进行的。 在这里介绍几个常

    2024年04月15日
    浏览(56)
  • C语言·预处理详解

            C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的                 __FILE__  进行编译的源文件                 __LINE__  文件当前的行号                 __DATE__  文件被编译的日期                 _

    2024年01月21日
    浏览(48)
  • 【C语言】预处理详解

             本文目录 1 预定义符号 2 #define 2.1 #define 定义标识符 2.2 #define 定义宏 2.3 #define 替换规则 2.4 #和## 2.5 带副作用的宏参数 2.6 宏和函数对比 2.7 命名约定 3 #undef 4 命令行定义 5 条件编译 6 文件包含 6.1 头文件被包含的方式 6.2 嵌套文件包含 这些预定义符号都是语言内置

    2024年02月14日
    浏览(43)
  • C语言:预处理详解

    创作不易,来个三连呗! C语⾔设置了⼀些预定义符号, 可以直接使⽤ ,预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义

    2024年01月19日
    浏览(48)
  • C语言【预处理器】

    1、一些关于预处理的知识 ​C代码中,一般带 # 的都是预处理指令,包括 宏替换、文件包含、条件编译 等。 ​为兼容一些老编译器, # 前后一般不写空格 ​预处理指令后面不加分号。 2、宏定义 3、文件包含 ​自定义头文件,用\\\" \\\" 。 引号里填相对路径或绝对路径。基于当

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包