美文网首页
预处理面——宏是危险的(inline)

预处理面——宏是危险的(inline)

作者: _江小白_ | 来源:发表于2016-11-11 19:36 被阅读6次

宏是危险的

宏可以充当函数使用,但又不是真正的函数。
宏展开体属于函数体出现时的定义,并不是函数真实调用时的定义。

#define CAL ((x)*(x)*(x))


---use--
int i;
......
int a=CAL(++i);//未定义或者说歧义

使用内联函数或者静态函数替换

inline int  cal(int i){
  return i*i*i;
}

相关文章

  • 预处理面——宏是危险的(inline)

    宏是危险的 宏可以充当函数使用,但又不是真正的函数。宏展开体属于函数体出现时的定义,并不是函数真实调用时的定义。 ...

  • C++的一些容易忘记的知识点

    头文件中一般放置四样东西:声明、宏、static定义、inline定义。 预处理是把x.h(或者其他任何的文件后缀...

  • 结构体

    这里CG_INLINE是一个宏:#define CG_INLINE static inline,这是系统的一...

  • C语言预处理指令

    预处理指令 宏定义 宏定义会在预处理的时候, 用宏定义的值来替换宏的名称 格式: #define 宏名称 宏值 应...

  • const 关键字 - iOS

    一、const与宏的区别 处理时刻:宏是预处理时(即在预处理时把宏展开,替换为原来的值, 没有类型,不做类型检查)...

  • 10.19

    今天主要讲了预处理 主要是预处理的概念和预处理命令的使用 包括宏定义“文件包含”处理条件编译等等宏定义是老师重...

  • 10/19

    今天老师讲了预处理命令,宏定义分为无参宏定义,带参宏定义和条件编译。宏定义包括宏名和宏展开,和函数相比预处理有很多...

  • C++ ----带默认形参的函数,inline(),模板函数,动

    带有默认值形参的函数 inline 函数 和宏定义的区别,宏定义原样替换,inline(),先进行运算,后替换 ...

  • IOS 内联函数Q&A

    Q:YYModel中有一个宏#define force_inline __inline__ __attribute...

  • iOS预处理宏使用指南

    预处理宏使用指南 预处理就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。 常用宏说明 ...

网友评论

      本文标题:预处理面——宏是危险的(inline)

      本文链接:https://www.haomeiwen.com/subject/ycbfpttx.html