一、#define1、仅仅作为标识符:#define作为标识符时是没有参数的2、作为宏:#define作为宏与它作为标识符的区别就是宏有参数而标识符没有例如:#defineMAX(X,Y)((X)>(Y)?(X):(Y))二、宏与函数的区别1、宏在使用时(编译阶段)会直接被替换掉(即简单的代码复制),并且不..
分类:
其他好文 时间:
2016-04-04 21:13:30
阅读次数:
164
宏和函数及在C/C++中的比较:1、频繁使用且执行简单的计算可以使用宏,而其他较为繁琐、复杂的程序可以用函数实现。2、宏定义时与类型无关,而函数需要注意参数的类型等。3、宏定义的名字全为大写,而函数名则是使用字母和“_”来进行命名。4、宏参数具有一定的副作用,需注意..
分类:
编程语言 时间:
2016-03-19 06:30:38
阅读次数:
178
1、函数指针类型定义,然后指针结构体类型定义,最后的调用形式为aaa.bbb();(aaa为结构体变量)或者 aaa->bbb();(aaa为结构体指针),函数指针最好用结构体封装起来变成指针结构体,可封装多个类型不同 的函数指针合成一个结构体。2、常用宏函数的封装3、事件位宏定义的使用4、结构体的
分类:
编程语言 时间:
2016-02-16 19:05:42
阅读次数:
232
大家在使用ATL技术做项目时,一定发现了非常麻烦的字符串字符集问题,下面把常用点和重点记录罗列一下,以备查。ATL提供了许多字符串转换函数,如果编译选项使得源和目的的字符类型相同,那么这些类不执行任何转换,关于设置系统编译项的问题前面windows编程的文章中已经介绍过..
分类:
其他好文 时间:
2015-12-30 00:35:19
阅读次数:
231
文件名: (assert.h) 这是一个C语言的诊断库,assert.h文件中定义了一个可作为标准调试工具的宏函数: assert ;下面介绍这个宏函数:assert函数原型:void assert (int expression);函数描述: 如果这个宏函数形式的参数(expression...
分类:
其他好文 时间:
2015-12-20 23:55:49
阅读次数:
196
1. 预设常量#include //#define THE_NUM 2main(){ printf("The num is %d\n",THE_NUM);}gcc a.c -DTHE_NUM=22. 条件预处理#include #define WIN 1#define LINUX 2#define....
分类:
其他好文 时间:
2015-10-13 16:40:20
阅读次数:
92
转载自:http://www.ccidnet.com/2010/0709/2110463.shtml1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参...
分类:
其他好文 时间:
2015-09-17 14:58:36
阅读次数:
144
C语言中的宏函数可以简化我们的操作。
但是存在一定的问题,宏函数是不能使用++a/a++,--a/a--这种形式的。这样会导致BUG(所得到的结果与预想结果不一致)。
原因就是宏函数是进行的文本拷贝,而不是传递的参数。
示例代码如下:
#include
using namespace std;
#define SQUARE(X) ((X)*(X))...
分类:
编程语言 时间:
2015-08-10 12:10:11
阅读次数:
121
NDK系统参数详解:LOCAL_PATH:=$(callmy-dir)指定LOCAL_PATH变量,用于查找源文件,上面的语句的意思是将LOCAL_PATH变量定义成当前文件所在目录路径, my-dir是编译系统提供的宏函数,被用来获取当前的目录。$(call import-add-path,$(L...
分类:
移动开发 时间:
2015-08-09 17:04:03
阅读次数:
232
第十六章C预处理器和C库开发一个包含您需要使用的预处理器定义的头文件//max.h
#ifndef_MAX_H_
#define_MAX_H_
#defineMAX(X,Y)((X)>(Y)?(X):(Y))
#endif2.两个数的调和平均数可用如下方法得到:首先对两数的倒数取平均值,最后再取倒数。使用#define指令定义一个宏“函数”..
分类:
其他好文 时间:
2015-06-12 22:26:41
阅读次数:
291