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));

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

  • 相关阅读:
    VIM文本替换命令
    VIM格式化代码(How to format code with VIM)
    字符串匹配的Boyer-Moore算法
    Java中数组的遍历
    UVa10723
    uva242,Stamps and Envelope Size
    UVa1630,Folding
    uva1629,Cake Slicing,记忆化搜索
    uva 10118,记忆化搜索
    uva10003
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1743190.html
Copyright © 2011-2022 走看看