zoukankan      html  css  js  c++  java
  • C语言细节之九:宏与C预处理器

    1、多语句宏的书写

         通常的目标是:书写一个像包含一个单独的函数调用语句的宏。

         这意味着:调用者需要提供最终的分号,而宏体则不需要。

         因此宏体不能为简单的括弧包围的复合语句,因为如果这样,调用的时候就会发生语法错(明显是一个单独语句,但却多了一个分号)。每行的最后用\连接

    2、sizeof不能用于#if预编译器指令中,因为此时还未对类型名称作解析

    3、m4工具是用于多用途的预处理器

    4、参数个数可变的宏的书写

        一般用一个单独的用括弧括起来的”参数“定义调用宏,参数在宏扩展的时候成为类似printf()那样的函数的整个参数列表。

        #define DEBUG(args) (printf(“DEBUG: ”), printf arg)

        if(n != 0) DEBUG((“n is %d\n”, n));

        明显缺陷是必须记住使用一对额外的括弧。

  • 相关阅读:
    福尔摩斯的约会 (20)
    数素数 (20)
    STL源码分析-priority_queue
    STL源码分析-bitset
    STL源码分析-rbtree
    STM32自动生成精美图案
    STL源码分析-function
    STL源码分析-list
    STL源码分析-iterator
    STL源码分析-traits
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1743190.html
Copyright © 2011-2022 走看看