之前在腾讯实习生笔试的时候,遇到一个问题,当时一点思路也没有,现在想了想,找了一些资料,大体上明白了应该如何去做。
问题是:
使用C实现求一个变量的大小,不使用sizeof。首先我先把我的代码贴上:#define size(x) ((char*)(&x+1)-(char*)(&x))该宏定义就实现了刚刚的需求。
首先,我们知道,char是占用一个字节的大小,我们得到一个变量之后,先取其引用,即...
分类:
其他好文 时间:
2015-04-19 18:01:14
阅读次数:
220
简单线段树的单点更新..这题有点坑..用宏定义会超时..不懂为什么.. 1 #include 2 #include 3 #define maxn 200005 4 //#define max(a,b) a>b?a:b 5 int segment[maxnb?a:b; 9 }10 void pus.....
分类:
其他好文 时间:
2015-04-19 17:42:06
阅读次数:
146
C、C++和Objective-C都支持宏定义。宏在编译预处理过程中会进行代码替换。我们可以通过命令行非常容易就能的到一个源文件处理后的结果。
#define kMax 100
int main(int argc, char * argv[]) {
int a = 100;
if (a kMax) {
a++;
}
else {
...
分类:
其他好文 时间:
2015-04-19 16:17:31
阅读次数:
182
今天重新温习了一下C语言的指针部分,突然想到了经常会碰见的一种宏定义:#define PGAS (*((volatile unsinged long *)(x))) 在解析该宏定义前,先看看指针变量的声明 声明一个int类型的指针变量:int* p; 仅仅是这样定义,这个指针是不能够直...
分类:
其他好文 时间:
2015-04-19 00:59:09
阅读次数:
233
(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。 WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题: #define WINAPI _stdcall 按C编译方式,_stdcal...
分类:
其他好文 时间:
2015-04-18 23:18:35
阅读次数:
123
在C语言中我们使用#define宏定义的方式来处理符号常量。而在C++中有一种更好的处理符号常量的方法,那就是使用const关键字来修改变量声明和初始化。这种处理常量方式的好处不言而喻:如果程序在多处需要使用同一个值时,我们不妨将这个值定义为常量,这样在需要修改值时,只需修改常量即可,省去很多麻烦。...
分类:
编程语言 时间:
2015-04-18 20:25:25
阅读次数:
175
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。 关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在....
分类:
其他好文 时间:
2015-04-18 11:26:29
阅读次数:
108
#import //#define kMAX(A,B) A>B?A:B //第一版本//#define kMAX(A,B) (A>B?A:B)) //第二版本//#define kMAX(A,B) ((A)>(B)?(A):(B)) //第三版本//#define kMAX(...
分类:
其他好文 时间:
2015-04-17 20:10:50
阅读次数:
81
转自:www.xuebuyuan.com/2077822.htmlerror: expected ‘)’ before ‘PRId64’原来这个宏定义给c用的,C++要用它,就要定义一个__STDC_FORMAT_MACROS宏显示打开它。c++使用PRID64,需要两步:包含头文件:定义宏:__S...
分类:
其他好文 时间:
2015-04-17 11:09:22
阅读次数:
138
宏定义的基本概念● 预处理指令都是以#开头● 预处理指令分为三种1.宏定义定义格式:#define 宏名 参数2.条件编译3.文件包含● 预处理指令在代码翻译成0和1之前进行● 预处理指令的位置是可以写的● 预处理指令有自己的作用域作用域:从编写指令的那一行开始移植到文件结束● 宏名一般用大写或是以...
分类:
编程语言 时间:
2015-04-16 23:43:44
阅读次数:
165