首页 > 其他分享 >C语言【预处理器】

C语言【预处理器】

时间:2023-11-23 20:24:30浏览次数:32  
标签:... elif int C语言 处理器 endif else define

C语言【预处理器】

1、一些关于预处理的知识

​ C代码中,一般带 # 的都是预处理指令,包括 宏替换、文件包含、条件编译 等。

​ 为兼容一些老编译器, # 前后一般不写空格

​ 预处理指令后面不加分号。

2、宏定义
// 格式如下
#define 宏名称 (替换文本)		// 这个替换文本记得加上括号,因为是直接文本替换,可能会由于优先级而混乱
// 这个替换文本可以是字面量、表达式、函数等
// 带参数的宏。 举个例子
#define print_int(n) printf("%d\n", n)

void main(){
    // 宏的使用
    int a = 10;
    print_int(a);
}
// 宏可嵌套
#define PI 3.14
#define S PI*2*2
// 使用宏定义数据类型
#define BOOL int
取消宏定义。在想解除宏定义的代码前加 #undef 宏名称。之后的代码就不能使用定义好的宏了。
// 带参数的宏。举个例子
#define print_int(n) printf("%d\n", n)	// 这个参数不能指定类型,需要自己谨慎,但这种方法比函数高效
3、文件包含

​ 自定义头文件,用" " 。 引号里填相对路径或绝对路径。基于当前目录加./或不加

​ 头文件如果使用 " " 会先从当前目录下找,找不到再从系统找。

​ 头文件如果使用 <> 会直接从系统找。

Win和Linux路径分隔符分别是什么?

4、条件编译
#if 条件 ... #elif ... #else ... #endif		// 这个endif不能省略
#ifdef 宏名称 ... #else ... #endif				// 宏名称定义过则条件成立。没有 #elif
#if defined 宏名称 ... #elif ... #else ... #endif	// 同上。 可以有 #elif
#ifndef 宏名称 ... #else ... #endif		// 宏名称没有定义过则条件成立。没有 #elif

标签:...,elif,int,C语言,处理器,endif,else,define
From: https://www.cnblogs.com/wangsiyaoa/p/17852406.html

相关文章

  • C语言基本功: float格式输入与输出,6位有效数字,6位小数
    可以看这个题目,要求保留6位有效数字(也就说说6个数字位有效,而不是保留6位小数)洛谷地址:https://www.luogu.com.cn/problem/P5714传送门:https://juejin.cn/s/c%E8%AF%AD%E8%A8%80%E4%BF%9D%E7%95%99%E5%85%AD%E4%BD%8D%E6%9C%89%E6%95%88%E6%95%B0%E5%AD%97  常规的控制输出......
  • C语言【指针1】
    C语言【指针1】1、指针类型长度随操作系统,64位操作系统为8Byte。​ 具体说一下:地址相当于门牌号,一般一个地址指向的空间是一个字节(下面按一个字节叙述,计算机底层也许也有按双字节编码的)。对于64位机器,某一个地址有64位,所以在空间里存那某一个地址时,这64位即8Byte。这64位总共能......
  • c语言读取文件中的数据到结构体和数组
    1、数组#include<stdio.h>#include<stdlib.h>#defineBUF_SIZE100#defineMAX_SIZE100intmain(){int**arr;introws,cols;introws_size,cols_size=5;intnum,i=0;intarr_size=0;FILE*fp=NULL;fp=f......
  • C语言数据结构_查找并删除单链表中最大值结点并返回值
    代码实现1#include<stdio.h>2#include<stdlib.h>34typedefstructNode//定义一个结构体5{6floatdata;7structNode*next;8}Node;910Node*Chuangzao_LinkedList()//创建一个链表11{12Node*head=NULL;//......
  • 实验2 C语言分支与循环基础应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN24658intmain(){9intnumber;10inti;11srand(time(0));12for(i=0;i<N;++i){13nu......
  • 【C语言】整型数值范围
    #include<stdio.h>intmain(){inta=0;while(a<a+1){a++;}printf("有符号基本整型的最大值是:%d\n\n",a);printf("有符号基本整型最大值+1的结果是:%d\n\n",a+1);intb=......
  • 【C语言】强制类型转换表达式
    #include<stdio.h>intmain(){ doublea=3.45; printf("%f\n\n",a); printf("%d\n\n",(int)(a)); printf("%d\n\n",(int)a); printf("%d\n\n",int(a)); /*printf("%d\n\n",inta);*/} ......
  • 学C语言的第一天
     我是一名来自农村的孩子,没见过什么大世面,大学之前也没怎么接触过计算机,但是对计算机有浓厚的兴趣,我愿意去了解去学习它。 我学习C语言的主要目的也就是跟进时代,了解时代,去发现更多机会,去迎合社会需求。当我意识到土木工程就业现状之后我就考虑是否需要换一个方向去发展,就算......
  • B站C语言 ----结构体
    //描述一个学生////struct结构体关键字 Stu-结构体标签 stuctStu-结构体类型//structStu//{// //成员变量// charname[20];// shortage;// chartele[12];// charsex[5];////}s1,s2,s3;//s1,s2,s3是三个全局的结构体变量//typedefstructStu//{// //......
  • C语言程序设计P7
    1for循环代码块变种练习练习一for循环可以嵌套练习二练习三2dowhile循环eg:打印1-103循环练习计算n的阶乘计算阶乘和计算1!+2!+...+10!(法1)嵌套循环,先计算n的阶乘,再相加(法2)先计算n的阶乘,再n乘n的阶乘求和......