\ 运算符 + \ 运算符用于在预处理期将宏参数转换为字符串 + \ 的转换作用是在预处理期完成的,因此只在宏定义中有效 + 编译器不知道 的转换作用 例子1: 运算符的基本用法 例子2:运算符的妙用 \ \ 运算符 + \ 运算符用于在预处理期粘连两个标识符 + \ 的连接作用是在预处理期完成的, ...
分类:
其他好文 时间:
2018-06-22 14:43:07
阅读次数:
143
第31课 - 老生常谈的两个宏 1. Linux 内核中常用的两个宏定义 1.1 offsetof 宏 在 include/linux/stddef.h 头文件中定义 TYPE 是结构体类型、MEMBER 是结构体中一个成员的成员名 作用:offsetof 宏返回的是 MEMBER 成员相对于整个结 ...
分类:
其他好文 时间:
2018-06-20 00:07:41
阅读次数:
200
c语言关于宏的使用十分频繁。但是宏的使用有利也有弊,与此同时,它还是一个特别容易搞错的地方。正是基于此,它常常成为一些面试会侧重考察的地方。 所谓宏就是 #define 机制包括的一个规定,即允许把参数替换到文本中。它的声明方式:#define name(参数列表) stuff 其中参数列表是一个由 ...
分类:
其他好文 时间:
2018-06-19 20:13:13
阅读次数:
165
#define 定义宏#undef 取消已定义的宏#if 给定条件为真,则生成下面的代码 #elif 跟else if一个道理.#else 跟else一个道理#endif 结束一个#if....#else条件编译快#ifdef 如果宏已经定义,则编译下面嗲吗#ifndef 如果宏没有定义,则编译下面 ...
分类:
其他好文 时间:
2018-06-18 18:18:28
阅读次数:
131
在后台程序运行出问题时,详尽的日志是抓错不可缺少的帮手,这里提供一个能自动记录日志触发点文件名、行号、函数名的方法,关键是利用C99新增的预处理标识符__VA_ARGS__ 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息 ...
分类:
编程语言 时间:
2018-06-17 19:02:58
阅读次数:
285
一、前言 在linux内核中支持3种内存模型,分别是Flat memory model,Discontiguous memory model和Sparse memory model。三种内存模型对应于linux内核的配置选项分别为:CONFIG_FLATMEM,CONFIG_DISCONTIGMEM ...
分类:
系统相关 时间:
2018-06-17 16:07:12
阅读次数:
578
1.知识点 1.1宏定义 (1)不带参数的宏定义 (2)带参数宏定义,这种形式称为宏函数,但其实并不是函数 1.2内联函数 宏定义是在预处理阶段进行宏展开的,但是经常会出现一些意想不到的错误,故出现内联函数,内联函数既发挥了宏定义的优势,又弥补了其缺点。 内联函数是在定义时在函数最前面加上inlin ...
分类:
编程语言 时间:
2018-06-17 14:22:12
阅读次数:
205
OnCtlColor 有以下几个宏定义 #define CTLCOLOR_MSGBOX 0 #define CTLCOLOR_EDIT 1 #define CTLCOLOR_LISTBOX 2 //编辑下拉列表颜色#define CTLCOLOR_BTN 3 //编辑按钮颜色#define CTLC ...
分类:
编程语言 时间:
2018-06-09 13:13:05
阅读次数:
618
我们学习宏定义的第一个概念是,宏定义作为替换作用。 例如: 宏定义是编译器在编译时,将程序中所有SIZE替换成32,我这里就不详细将宏定义的知识, 下面讲讲在项目中,看到空的宏定义是什么情况以及它作用和用法。 先看看项目中的代码, 如下: 这个宏定义什么都没有,作用是什么呢? 作用是标志 再看看上面 ...
分类:
其他好文 时间:
2018-06-08 00:53:10
阅读次数:
163
C++实验课要求用for each 循环来实现关联容器 map 的输出,一开始完全萌比。查了好久的资料才整理出下面的: C++11新特性之一就是类似java的for each循环: 还有一种宏定义的方法: ...
分类:
编程语言 时间:
2018-06-07 19:20:26
阅读次数:
203