#define a() 和 void a(){} 有什么区别为何前者编译出的文件比后者 要小400多个字节

2025-02-25 17:17:39
推荐回答(2个)
回答1:

#define a() 使用的是预处理器的宏,宏的实现是用预处理器而不是编译器,预处理器直接用宏代码代替宏的调用,这样就节省了参数压栈 生成汇编CALL 返回参数等等,非常节省开销

而void a(){} 只是普通的函数调用,自然#define a() 要比void a(){} 节省的多

另外#define a() 在C++里的表现行为就是内联函数

回答2:

#define a() 只是重命名,即时把a定义为(),在以后程序中用到a就代表()
void a(){} 则是一个函数,虽然函数体{}中是空的,但他仍然是一个函数,a后的()中是变量-型参,不过此函数是不带型参的