C语言笔记——7.预处理

七、预处理

1. 常用预定义符号
__FILE__  //当前编译的文件名
__FUNCTION__ //当前所在函数的函数名
__DATE__ //当前编译日期
__TIME__ //当前编译时间
//以上格式占位符都用%s,如:printf("%s",__DATE__)
__LINE__ //当前行数,格式占位符是%d,如:printf("%d",LINE)   
_CRT_SECURE_NO_WARNINGS //关闭安全检查
    
2.宏定义

宏定义,又称为宏替换,自定义一个宏(要符合标识符的命名规则),用于替换任意数据、表示符或者表达式。

  1. 无参宏定义

    基本格式:#define 宏名 宏替换

    //例如
    #define A 35 //宏A就代表整型数据35
    #define TEST asssdj //....代表asssdj
    #define I int //宏I代表int(相当于给数据类型取别名)
    //注:不能给宏定义的常量赋值
    A = 11; //错误,不能改变宏定义常量的值
    
  2. 宏定义,一改全改

    #define ROL 10
    #define COL 10
    int main()
    {
        int arr[ROL][COL] = {1,2,3,4,5};
        for (int i = 0; i < ROL; i++)
        {
            for (int j = 0; j < COL; j++)
            {
                printf("%d  ",arr[i][j]);
            }
            printf("\n");      
        }  
    }
    
3. 带参宏

定义:

#define 宏名(参数列表) 内容

带参宏类型一个函数,带参宏的参数是没有类型的,带参宏没有返回值。

#define FUN(a, b) {printf("%d,%d\n",a,b); printf("%d\n", a+b);}
int main()
{
    FUN(10, 10);
}
#define F(a,b) A*B
int main()
{
    printf("%d\n",F(1+2,2+1));  //输出1+2*2+1=6
}
4. 常量的定义

除了宏定义常量意外,还可以通过const关键字定义常量。

常量必须初始化具体的值,初始化之后不允许被修改。

基本格式:const 数据类型 常量名 = 常量值

const int a = 3; //定义一个常量a,其值=30
a = 40; //错误

定义常量后,值不可以被改变。

5. 宏定义可以是汉字
#define 整型 int
#define 字符型 char
int main()
{
    整型 a=10;
    字符型 b='a';
}
6. 文件包含

如果想要用库函数就需要包含头文件,也就是文件包含;也可以自己编写自定义头文件。

基本格式

  1. #include <stdio.h> ,包含系统头文件<>,只会在系统头文件中找;
  2. #include <name.h>,自定义头文件,在自定义头文件中找不到再取系统头文件中找;
  3. 文件包含允许嵌套。

自定义头文件

//tool.h文件
#ifndif __TOOL_H__
#difine __TOOL_H__

void FUN();

#endif

同时需要配套一个tool.c文件,用于编写FUN()函数具体实现什么东西

#include <tool.h>
void FUN()
{
    printf("111\n");
}

在主函数中,需要导入自定义头文件,即可用FUN()函数

#include <stdio.h>
#include <tool.h>
int main()
{
    FUN();
}
7. 条件编译

即根据不同的条件编译不同的代码块。

  1. #if…#else, 和if…else 差不多

    #if 表达式 //表达式为真,则执行if,否则执行else

    ​ 代码块1;

    #else

    ​ 代码块2;

    #endif

  2. 另一种

    #define A 3
    int main()
    {
    #ifdef A 
        printf("111\n");
    #else
        printf("000\n");
    #endif
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼才的凝视

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值