C语言(C++)宏、内联函数、函数的区别和使用情形总结

(1)参数传递:宏可以很方便的继承之前代码的变量,函数,内联函数都要靠传参和全局变量

(2)代码生成 宏和内联函数生成时候会替换,没有函数调用时的压栈,因此执行效率会比函数高一些,没有栈溢出的风险,但会生成更多的代码占用更多空间。

(3)函数和内联函数要改变输入的参数必须用引用或指针

关于宏

#define STR(str) #str 表示把str加上""

#define STR(str) x##str 表示把str连接上x

已经特殊的符号不能作为宏的参数。

时间: 2024-10-20 14:05:18

C语言(C++)宏、内联函数、函数的区别和使用情形总结的相关文章

sql server 创建内联表值函数

表值函数就是返回table 的函数使用它可以方便的进行查询的处理 创建的代码如下: create FUNCTION returunclassfirstlist(  -- Add the parameters for the function here )RETURNS TABLE ASRETURN ( -- Add the SELECT statement with parameter references here select * from classfirst;) 我们在使用创建的函数的时

C++如何处理内联虚函数

http://blog.csdn.net/hedylin/article/details/1775556 当一个函数是内联和虚函数时,会发生代码替换或使用虚表调用吗? 为了弄清楚内联和虚函数,让我们将它们分开来考虑.通常,一个内联函数是被展开的. class CFoo { private: int val; public: int GetVal() { return val; } int SetVal(int v) { return val=v; } }; 这里,如果使用下列代码: CFoo x

内联表值函数FUNCTION

创建一个内联表值函数: 1 USE TSQLFundamentals2008; 2 IF OBJECT_ID('dbo.fn_GetCustOrders') IS NOT NULL 3 DROP FUNCTION dbo.fn_GetCustOrders; 4 GO 5 CREATE FUNCTION dbo.fn_GetCustOrders 6 (@cid AS INT) RETURNS TABLE 7 AS 8 RETURN 9 SELECT orderid, custid, empid,

C++中的内联成员函数与非内联成员函数

在C++中内联成员函数与非内联成员函数的可以分为两种情况: 1.如果成员函数的声明和定义是在一起的,那么无论有没有写inline这个成员函数都是内联的,如下: using namespace std; class test{ public: void fuc() { cout << "ok!" << endl; } }; int main(void) { test t, t1; t.fuc(); t1.fuc(); return 0; } 或者: using n

内联成员函数应放在哪

今天复习C++ Primer的时候,看到了关于C++类的内联成员函数的放置,应该放在头文件中.那么这到底是为什么 呢?仅仅是一种代码规范问题还是必须这样做呢? 下面我就来讲讲我自己的理解吧.要彻底理解这个问题,首先就要了解下函数的声明和定义了.我们知道,函数可以 在多处声明,但只能在一个地方定义,不然就会出现重定义.大部分函数默认是外部链接,而inline函数默认为内部链 接.也就是说inline函数只能在本文件中使用,对其他文件是不可见的.一般我们使用某个类的时候,都是在文件中加 上该类的头文

内联表值函数

内联表值函数是一种可重用的表表达式,能够支持输入参数.除了支持输入参数以外,内联表值函数在其他方面都与视图相似.(可以将内联表值函数看作是一种参数化的视图,尽管没有这种正式的说法). 例: CREATE FUNCTION fn_GetCustOrders (@cid as int) RETURNS TABLE AS RETURN SELECT orderid,custid,empid,orderdate,requiredate FROM dbo.Orders WHERE [email prote

block(块级元素)和 inline(内联元素) 的区别

<td style="word-break:break-all"> 强制换行 <td  style="width:80px;display:block;boverflow: hidden;">超出隐藏,注意要设置宽度. 内联转化为块状:display:block 或 float:left / right 块状转化为内联:display:inline; 但是要注意内联元素是不能设置宽度和高度的.那就要强制把内联元素转换为块级元素了 div这样的

css中内嵌,内联以及外联的区别

在学习css的过程中,经常会用到内嵌,内联以及外联这三种,接下来我就对于自己所学的一点介绍一下: 1.内嵌 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <h1 style="color:red;">

块级元素与行内元素(内联元素)的区别和联系

在css盒子模型中,我们提到了html元素中的块元素(block element)和内联元素(inline element).那么它们究竟是什么呢? 其实,这两种元素都是html规范中的概念.块元素(block element)一般是其他元素的容器元素,能容纳其他块元素或内联元素.最常见的就是P和div这两个,说的简单点,块元素就好比一个四方块,可以放其 他的四方块,并可以呈现在页面上任何地方.默认情况下块元素,是独占一行的.常见的块元素:div.h1-h6标题.form(只能用来容纳其他块元

VC内联汇编和GCC内联汇编的语法区别

VC: #include <stdio.h> main(){ int a = 1; int b = 2; int c; __asm{ mov eax,a mov ebx,b mov ecx,1h add eax,ebx mov c,ecx } printf("%x\n", c); } GCC: #include <stdio.h> main(){ int a = 1; int b = 2; int c; asm( "add %2,%0" //