ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 预处理指令--C语言

预处理指令--C语言

Linux操作系统 作者:IT王大王 时间:2015-03-26 10:51:02 0 删除 编辑

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

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

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

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

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

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

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

  • #运算符

#也是预处理?是的,先看下面例子:

#define SQR(x) printf("The square of x is %d.\n",((x)*(x)) );

如果这样使用宏:

SQR(8);

则输出为:

The square of x is 64.

注意到没有,引号中的字符x被当作普通文本来处理,而不是被当作一个可以被替换的语言符号。

假如你确实希望在字符串中包含宏参数,那我们就可以使用“#”,它可以把语言符号转化为字符串。上面的例子改一改:

#define SQR(x) printf("The square of "#x" is %d.\n",((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个字节对齐。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30094666/viewspace-1474102/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-01-06

  • 博文量
    58
  • 访问量
    67133