登录/注册

c语言define

更多

在C语言中,#define 是一个预处理器指令,用于定义宏(macro)。它的核心功能是在源代码被编译之前进行文本替换,主要用途包括:

1. 定义常量

#define PI 3.14159      // 定义常量π
#define MAX_SIZE 100    // 定义数组最大长度

2. 定义带参数宏(类似函数)

#define SQUARE(x) ((x) * (x))       // 计算平方
#define MAX(a, b) ((a) > (b) ? (a) : (b)) // 求最大值

3. 定义多行宏

使用 \ 连接多行:

#define PRINT_SUM(a, b) \
    printf("%d + %d = %d\n", \
    (a), (b), (a) + (b))

4. 特殊用法


️ 注意事项

  1. 末尾不加分号
    #define 是文本替换,若加分号可能导致语法错误:
    #define PI 3.14;
    float area = PI * r * r; // 替换为 3.14; * r * r → 错误!
  2. 作用域
    宏从定义处生效,直到文件结束或用 #undef 取消定义。
  3. 调试困难
    宏在编译前展开,编译器报错可能指向宏展开后的代码,而非原始宏。
  4. 替代方案
    • 常量推荐用 const 变量(如 const float PI = 3.14;)。
    • 函数式宏推荐用内联函数(C99的 inline)。

const 常量的区别

特性 #define const 常量
类型检查 无(纯文本替换) 有(编译器检查类型)
作用域 文件全局(可用 #undef 取消) 块作用域(如函数内)
调试 不可见(被替换) 可见(符号存在于调试器)
内存占用 不占用内存 占用内存(只读段)

经典用例

#include <stdio.h>

#define DEBUG 1                // 调试开关
#define LOG(msg) if(DEBUG) printf("LOG: %s\n", msg)

int main() {
    LOG("Program started.");   // DEBUG=1时输出日志
    int x = 10;
    int y = SQUARE(x + 1);     // ((x + 1) * (x + 1)) → 121
    return 0;
}

小结

C语言中最常见的宏定义写法

如果让你用C语言写个宏定义,我相信大部分同学顺手就能写出define。

2024-10-28 11:12:31

C语言#define的应用

在 C/C++ 编程语言中,当程序被编译时,被发送到编译器,编译器将程序转换为机器语言

2024-03-06 11:29:35

define宏定义

define宏定义 以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C

2023-11-24 15:35:39

《PIC单片机C语言》pdf

《PIC单片机C语言》pdf

资料下载 ah此生不换 2021-11-29 16:54:18

嵌入式软件之c语言编码规范

嵌入式软件之c语言编码规范

资料下载 www2021 2021-10-28 18:13:32

单片机C语言和汇编语言混合编程实例详解

单片机C语言和汇编语言混合编程实例详解

资料下载 chenjijun6 2021-08-16 09:50:41

DSP载波移相控制C语言源代码下载

DSP载波移相控制C语言源代码下载

资料下载 口沫横 2021-05-12 09:19:18

MATLAB语言C语言的区别资料下载

电子发烧友网为你提供MATLAB语言与C语言的区别资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、

资料下载 131594 2021-04-01 08:40:10

C语言中宏定义的使用技巧

#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。

2023-09-05 10:12:39

GNU C语言的特性

、__aligned、__builtin_等,这些都是GNU C语言的特性。 typeof 下面是比较两个数大小返回最大值的经典宏写法: #define

2023-06-22 10:05:00

C语言#define和typedef的区别

在C语言编程中,typedef 和 #define是最常用语句,可能很多工作过几年的工程师都没有去深究过它们的一些用法和区别。

2022-11-03 10:29:33

C语言进阶】宏定义里面使用#define会怎么样?

这个问题,学过C语言的你,了解过吗?

2022-10-31 10:39:25

C语言typedef与#define的用法和区别

在C语言编程中,typedef 和 #define是最常用语句,可能很多工作过几年的工程师都没有去深究过它们的一些用法和区别。

2022-10-12 10:39:58

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

在C语言程序里,出现的#开头的代码段都属于预处理。 预处理:是在程序编译阶段就执行的代码段。

2022-08-14 10:13:11

#define的高级用法简介

#define的高级用法

2020-02-05 11:50:59

7天热门专题 换一换
相关标签