• 预处理指令--C语言


    ANSI标准C还定义了如下几个宏:

    __LINE__ 表示正在编译的文件的行号

    __FILE__ 表示正在编译的文件的名字

    __DATE__ 表示编译时刻的日期字符串,例如:“25 Dec 2014”

    __TIME__ 表示编译时刻的时间字符串,例如:“12:30:55”

    __STDC__ 判断该文件是不是定义成标准C程序

        如果编译器不是标准的,则可能仅支持以上宏的一部分,或根本不支持。当然编译器也有可能还提供其它预定义的宏名。注意:宏名的书写由标识符与两边各二条下划线构成。

    • #运算符

        #也是预处理?是的,先看下面例子:
    #define SQR(x) printf("The square of x is %d.
    ",((x)*(x)) );
        如果这样使用宏:
    SQR(8);
        则输出为:
     The square of x is 64.
    注意到没有,引号中的字符x被当作普通文本来处理,而不是被当作一个可以被替换的语言符号。
        假如你确实希望在字符串中包含宏参数,那我们就可以使用“#”,它可以把语言符号转化为字符串。上面的例子改一改:
    #define SQR(x) printf("The square of "#x" is %d.
    ",((x)*(x));
    再使用:
    SQR(8);
    则输出的是:
    The square of 8 is 64

    • ##预算符
        和#运算符一样,##运算符可以用于宏函数的替代部分。这个运算符把两个语言符号组合成单个语言符号。看例子:
    #define XNAME(n) x##n
        如果这样使用宏:
    XNAME(8)
        则会被展示成这样:
    x8
        看明白了没?##就是个粘合剂,将前后两部分粘合起来。

    • #pragma pack
        使用指令#pragma pack (n),编译器将按照n个字节对齐。
        使用指令#pragma pack (),编译器将取消自定义字节对齐方式。
    在#pragma pack (n)和#pragma pack ()之间的代码按n个字节对齐。


  • 相关阅读:
    多行文本溢出显示省略号(…)
    CSS3 grayscale滤镜图片变黑白实例页面
    腾讯TGideas语义化标签(转)
    jQuery Ajax通用js封装
    动态加载 js
    Javascript的四种继承方式
    Android四大组件之Activity
    Android四大组件通信的Intent介绍和详解
    oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词
    oracle学习笔记(十三) 查询练习(三) 子查询查询
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332283.html
Copyright © 2020-2023  润新知