李永乐 数学讲师
广受学生信赖的“线代王”

预约

​计算机知识整理之C语言中编译预处理问题探讨

2022-10-25 22:21:15 来源:天任考研  

天任考研小编为大家整理了“计算机知识整理之C语言中编译预处理问题探讨”相关内容,为报考计算机专业的考生们提供指导。更多有关计算机考研干货可关注考研备考栏目。

 

计算机知识整理之C语言中编译预处理问题探讨

  (一)无参宏定义

  无参宏定义的一般格式为:

  #define 标识符 字符串

  其中:“define”为宏定义命令;“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

  注意:

  (1)宏名一般用大写字母表示,以与变量区别,但这并非是规定。

  (2)宏定义不是C语句,所以不能在行尾加分号。否则,宏展开时,会将分号作为字符串的1个字符,用于替换宏名。

  (3)在宏展开时,预处理程序仅按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。

  (4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后,到本文件结束。通常,宏定义命令放在文件开头处。

  (5)在进行宏定义时,可以引用已定义的宏名。

  (6)对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。

  【例】从键盘输入不超过100个字符,并统计其中英文字母(不区分大小写)的个数,直到输入的字符为'*'或输入的字符个数超过100为止。

  #include"stdio.h" /*文件包含*/

  #define MAXnum 100 /*键盘输入不超过100个字符*/

  void main()

  { int i,count=0;

  char c;

  for(i=0;i

  { c=getchar();

  if(c=='*') /*输入的字符为'*'时结束*/

  break;

  if(c>='a'&&c<='z'||c>='A'&&c<='Z')

  ++count;

  }

  printf("Count=%d",count);

  }

  (二)有参宏定义

  有参宏定义的一般格式为:

  #define 宏名(形参表) 字符串

  调用格式:宏名(实参表)

  有参宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。

  注意:

  (1)定义有参宏时,宏名与左圆括号之间不能留有空格。否则,C编译系统将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。

  (2)有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不做任何语法检查。

  【例】从键盘输入两个整数,并把其中的较大值显示出来。

  #include"stdio.h"

  #define MAX(a,b) ((a)>(b)?(a):(b))

  main( )

  {

  int x,y,z;

  scanf("%d%d",&x,&y);

  z=MAX(x,y);

  printf("Max=%d",z);

  }

  后,希望这些分享能够帮助各位小伙伴们更好的掌握C语言知识点。

专业课.jpg

以上是天任考研小编为大家带来的“计算机知识整理之C语言中编译预处理问题探讨”,希望考生们都能备考顺利,考上自己心仪的院校。

热门好课推荐

MORE

2025考研英语无忧班

时长:468课时


  • 刘晓艳

  • 张超

3000元
已报501人

2025考研数学无忧班

时长:604课时


  • 李永乐

  • 宋浩

4000元
已报198人

2025考研政治无忧班

时长:225.5课时


  • 孔昱力

2000元
已报337人

2025考研管综无忧班

时长:440h


  • 吕建刚

3980元
已报112人