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个字节对齐。

最新文章

  1. Spring以及SPringmvc相关问题: ServletContext -父子容器
  2. 搭建angular2环境(1)
  3. WebView的写法
  4. thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片
  5. EasyUI_Datagrid学习总结
  6. angularjs ngrepeat filter
  7. iOS中的几种定时器详解
  8. Lesson 4: Know Your Tools
  9. python3获取网页天气预报信息并打印
  10. 自定义switchButton
  11. 使用mybatis操作AS400数据库
  12. centos7 安装mysql5.7
  13. OOA/OOD/OOP
  14. 简单配置,让ES6脚本在浏览器里飞
  15. Number()、parseInt()和parseFloat()的区别
  16. drf 生成接口文档
  17. GitHub----初学习(一)
  18. ios中的coredata的使用
  19. postman的Testing examples(测试脚本示例)
  20. qt使用动态库(DLL)

热门文章

  1. eclipse导包导不进来
  2. [LeetCode] K-diff Pairs in an Array 数组中差为K的数对
  3. react源代码重点难点分析
  4. AXIOS源代码重点难点分析
  5. c++类与对象(1)——构造,复制构造函数
  6. github的简单使用
  7. [HAOI 2008]木棍分割
  8. [HNOI2010]弹飞绵羊
  9. [ZJOI2016]小星星
  10. bzoj 3277: 串