首页 热点资讯 义务教育 高等教育 出国留学 考研考公

C语言define的这个函数的实现在哪里?

发布网友 发布时间:2022-04-22 05:57

我来回答

4个回答

热心网友 时间:2023-11-24 15:17

#define 它不是C语言的 函数。它是C/C++语言 的 “宏”命令,是 预编译 命令。
define -- 英文意思 “定义”。
预编译,是把用户书写的源程序编译成计算机可执行程序的过程(即编译过程)中的一个步骤。#define 的命令格式是:
#define 这东西 成为什么东西
它在正式编译前,会把原程序里的 ”这东西“ ,全部用 “成为什么东西”替代,替代
结束后再正式编译。
这里的 MESSAGEINFO(x) 就是 ”这东西“,源程序里出现的 所有MESSAGEINFO(x) 都要被替代掉。
这个替代还涉及 参数的替代,比较复杂,非三言两语能说清--要开课。
你需要学习 “预编译”课程 后才能弄懂。

热心网友 时间:2023-11-24 15:18

Define只是别名定义,编译时用后面的代替,起到简化,统一等作用。不是什么函数名称定义。仅仅是编译时替换!!!

热心网友 时间:2023-11-24 15:18

这个是宏,到参数的宏,不是函数,属于预处理。

热心网友 时间:2023-11-24 15:19

define 定义常量或宏。

#define PI 3.14159265357932384
这样定义一个数学意义的PI,用于简化程序编写。定义之后,使用PI即可取代3.14...一大串数字。
另外一种定义宏,如
#define add(a, b) (a) +(b)
这个定义,在实际使用中,可以这样:
add(3,4);
程序编译时,会自动把这个调用,替换为 (3) +(4)
或者用表达式:
add (3+1, 4-2);
这个会替换成:(3+1) + (4-2)
这样与函数有什么区别?有什么好处呢?
如果是函数 add(int a, int b)
那么调用这个函数时,会产生跳转,程序先记住当前指令执行的位置,然后跳转取add函数,执行add函数内部,执行结束后,再返回之前记住的指令的位置。
但如果使用宏定义呢,则会把代码插入在当前代码的位置,不会产生跳转。
宏定义还有一个好处是不做类型检查,如上面定义的add(a,b)
你可以使用整数调用 add(3,4)
也可以使用浮点型数据add (3.1, 4.2)
而如果使用函数定义,则需要定义两种不同的add(int a, int b); add(float a, float b)
比较宏定义与函数的优缺点是没有意义的,不同的使用方式,有各自的优势。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com