十一、宏定义

11.1 不带参宏定义

  • 一般形式:#define 宏名 宏体

  • 一般定义在函数外部,可在任意处定义

  • #undef 宏名 // 可终止宏名的作用域

  • 引号中的内容与宏名相同也不置换

  • 功能(宏展开):预编译时,用宏体替换宏名 ---- 不作语法检查

  • 生命周期:从声明处开始,若无#undef,则到程序终止为止,反之,则在#undef处结束

  • 宏定义可以嵌套,不能递归

  • 宏定义时,需要使用必要的括号 ---- 宏展开为不作语法检查的展开,若无括号,程序读取语句优先级可能会不符合逻辑

11.2 带参宏定义

  • 一般形式:#define S(a,b) (a)*(b)

  • 若宏过长,' \ ' 后换行继续宏定义

  • 宏定义时,在参数部分使用 ' # '

    • #define INSTEAD(x) #x ---- printf("%s\n",INSTEAD(b)) ---- 打印一个b

    • #define INSTEAD(x) #x#x ---- printf("%s\n",INSTEAD(b)) ---- 打印两个b

    带参宏 函数
    处理时间

你可能感兴趣的:(C/C++,语言总结,算法,c语言,数据结构)