define 与 inline】的更多相关文章

总结: const用于代替#define一个固定的值,inline用于代替#define一个函数.是#define的升级版,为了消除#define的缺陷. 参考内容:http://www.cnblogs.com/iloveyoucc/archive/2012/03/18/2404658.html http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/563879.html #define和inline 的区别 define:定义预编译时处理的宏:…
define 就是代码替换,在编译阶段进行简单的代码替换,大量用于宏定义开关,以及定义表达式和常量,如: 1.开关定义 #define CONFIG_OPENED 使用: #ifdef CONGFIG_OPENED ..... #else ..... #endif 2.常量定义 #define NAME "TEST" 使用: printf("the name is %s", NAME); #define HAVE_DONE 1 使用: if(HAVE_DONE) {…
1.typedef和#define的区别 typedef int* pInt; , b = ; const pInt p1 = &a; //p1是常量指针 pInt const p2 = &b; //p2是常量指针 //这里的const就是拿来修饰p1.p2的,跟pInt没关系 1)作用:typedef定义了一个新的类型别名,而#define(宏定义)只是简单的替换 2)类型安全检查:用typedef定义时有类型安全检查,而#define是简单的替换,没有类型安全检查(所以容易出错) 3)…
在C&C++中 一.inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 取代这种形式的原因如下: 1. C中使用define这种形式宏定义的原因是因为,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是…
1. 经过测试#define与inline的速度几乎没有区别. 2. inline函数更为安全,有效避免了#define二义性问题.inline是真正的函数,而#define只是在字符串意义上的宏替换. 3. 在开发工程的时候inline可以封装在类中,而#define不行,#define容易产生重复定义的问题. 4. inline函数对编译器来说只是建议,因此编译器在编译的时候不一定按照inline函数进行展开.这就需要注意两个问题: 1)inline函数的函数体不能复杂,否则编译器将按照一般…
1. GCC的inlinegcc对C语言的inline做了自己的扩展,其行为与C99标准中的inline有较大的不同. 1.1. static inlineGCC的static inline定义很容易理解:你可以把它认为是一个static的函数,加上了inline的属性.这个函数大部分表现和普通的static函数一样,只 不过在调用这种函数的时候,gcc会在其调用处将其汇编码展开编译而不为这个函数生成独立的汇编码.除了以下几种情况外: 函数的地址被使用的时候.如通过函数指针对函数进行了间接调用.…
背景(C&C++中) inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义如: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 取代这种形式的原因如下: 1. C中使用#define这种形式宏定义的原因是因为,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这…
  背景(C&C++中) 一.inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 取代这种形式的原因如下: 1. C中使用define这种形式宏定义的原因是因为,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很…
背景: 在C&C++中 一.inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 为什么要取代这种形式呢: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这…
参考:http://armbbs.cn/forum.php?mod=viewthread&tid=95190&extra=page%3D1 对于内联函数,不能像普通函数那样,直接在.h文件里面声明下,源文件里面定义下,然后其他C文件就可以调用. 而加上static的前缀后,就解决了这个问题.以CMSIS软件包为例,就全部在头文件里面定义好,并加上了STATIC,这样其他文件就都可以调用了 #define __INLINE                               inli…