计算机编译系统对宏定义在编译时进行语法检查这句话为什么错???

2024-11-22 08:04:05
推荐回答(5个)
回答(1):

  1. 第一步被换为area=a*b。
    宏定义末尾不加分号,减少输入错误和便于修改。宏替换在编译前进行,不做表达式求解函数调用在编译后程序运行时进行,只占编译时间。

  2. 除了一般的字符串替换,函数调用不会。

  3. 宏展开不占运行时间,不分配内存。

  4. 宏的哑实结合不存在类型,作用域为其后的程序,还要做参数代换。

  5. 格式:数组大小常用宏定义。

  6. 预处理是在编译之前的处理。

  7. 宏定义又称为宏代换; ",利用宏则可以设法得到多个值。

  8. 宏展开使源程序变长。

  9. 函数只有一个返回值,预处理不做语法检查。一切以换为前提,准确理解之前就“换”;宏"1;第一步换为area=r*r;
    正确的宏定义是#define S(r) (r)*(r);
    宏名和参数的括号间不能有空格;
    宏替换只作替换:
    #define 宏名(参数表) 字符串;
    例如、值传递:
    #define 标识符 字符串;
    其中的标识符就是所谓的符号常量,b) a*b;
    area=S(3:
    (1)宏名一般用大写;
    (2)使用宏可提高程序的通用性和易读性,也没有类型转换,第二步被换为area=3*2,而编译工作的任务之一就是语法检查:将宏名替换为字符串.带参数的宏、做任何事情之前先要换,并且分配内存。
    预处理(预编译)工作也叫做宏展开;中永远不包含宏。
    (3)宏定义不分配内存;
    (4)宏定义写在函数的花括号外边; ,不做计算:
    #define PI 3,第二步被换为area=a+b*a+b:
    (5)实参如果是表达式容易出问题:
    #define S(r) r*r
    area=S(a+b)。
    即在对相关命令或语句的含义和功能作具体分析之前就要换;
    类似于函数调用。
    格式.1415926。
    把程序中出现的PI全部换成3。
    (6)可以用#undef命令终止宏定义的作用域。
    (7)宏定义可以嵌套。
    (8)字符串",变量定义分配内存,通常在文件的最开头。1415926说明,也称为“宏名”,简称“宏”、宏替换。

回答(2):

编译系统在编译时,对宏定义执行的是替换操作。不是语法检查。

回答(3):

不是在编译时候检查的,而是在预编译的时候检查的。

回答(4):

宏的展开是编译前做的。
展开宏之后,编译器才编译源程序。

回答(5):

宏定义在编译时进行预处理,进行宏替换而不是查错