C语言中宏定义的基本概念是什么?

2026-04-28 02:400阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1137个文字,预计阅读时间需要5分钟。

C语言中宏定义的基本概念是什么?

目录:以下为目录概览,详细内容请参考正文。

目录
  • #和##是宏定义中常用的两个预处理运算符
  • 1. 记号串化(#)
  • 2. 记号黏结(##)
  • 3.分析下列程序运行结果

#和##是宏定义中常用的两个预处理运算符

其中#用于记号串化,##用于记号黏结,下面分别介绍它们。

1. 记号串化(#)

记号串化可以将函数式宏定义中的实参转换为字符串。在函数式宏定义中,如果替换列表中有“#”,则其后的预处理记号必须是当前宏的形参。在预处理期间,“#”连同它后面的形参一起被实参取代。例如

#include <stdio.h> #define PSQR(x) printf("The square of " #x " is %d.\n",((x)*(x))) int main(void) { int y = 5; PSQR(y); PSQR(2 + 4); PSQR( 3 * 2 ); return 0; }

程序运行结果如下:

第1次调用宏时,用"y"替换#x。第2次调用宏时,用"2 + 4"替换#x。第3次调用宏时,用"3 * 2"替换#x。

ANSI C字符串的串联特性将这些字符串与printf()语句的其他字符串组合,生成最终的字符串。

阅读全文

本文共计1137个文字,预计阅读时间需要5分钟。

C语言中宏定义的基本概念是什么?

目录:以下为目录概览,详细内容请参考正文。

目录
  • #和##是宏定义中常用的两个预处理运算符
  • 1. 记号串化(#)
  • 2. 记号黏结(##)
  • 3.分析下列程序运行结果

#和##是宏定义中常用的两个预处理运算符

其中#用于记号串化,##用于记号黏结,下面分别介绍它们。

1. 记号串化(#)

记号串化可以将函数式宏定义中的实参转换为字符串。在函数式宏定义中,如果替换列表中有“#”,则其后的预处理记号必须是当前宏的形参。在预处理期间,“#”连同它后面的形参一起被实参取代。例如

#include <stdio.h> #define PSQR(x) printf("The square of " #x " is %d.\n",((x)*(x))) int main(void) { int y = 5; PSQR(y); PSQR(2 + 4); PSQR( 3 * 2 ); return 0; }

程序运行结果如下:

第1次调用宏时,用"y"替换#x。第2次调用宏时,用"2 + 4"替换#x。第3次调用宏时,用"3 * 2"替换#x。

ANSI C字符串的串联特性将这些字符串与printf()语句的其他字符串组合,生成最终的字符串。

阅读全文