#include
struct node
{
#define Max(a,b) a>b?a:b//个人感觉宏定义放在结构体里和放在放在最上面是没有区别的,可能是为了读代码方便
int x,y;
};
struct node2
{
int x,y;
};
int main()
{
node a;
node b;
scanf(...
分类:
其他好文 时间:
2015-01-27 11:17:47
阅读次数:
137
很多东西已经记不起来了,想到一点写一点,碰到一点写一点,慢慢累积。关于##在宏定义中用于替换传入变量的字符,例如: #define whole_operation(n) do { printf(#n "=%d\n", (n));} while(0);调用whole_operation(5*6), ....
分类:
编程语言 时间:
2015-01-26 19:14:00
阅读次数:
303
首先要注意:do..while(0)代表do里面的东西至少被执行一次,在这里仅仅执行一次。此种用法有三个用处:代替{}代码块,实现局部作用域。在某些宏定义时非常有用:#define f(x) do {\ some_code; some_code;} while(0)(while(0)...
分类:
其他好文 时间:
2015-01-25 08:42:14
阅读次数:
291
宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。1.不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”,字符串可以是常数、表达式、格式串等。 在编译预处...
分类:
其他好文 时间:
2015-01-23 13:03:13
阅读次数:
169
在工作中常用的几个宏定义
1 几个#ifndef连用
#ifndef _WIN32
#ifndef Sleep(n)
#define Sleep(n) usleep((n)*1000)
#endif
#endif
2 几个#if defined连用的定义
#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_WC...
分类:
其他好文 时间:
2015-01-22 15:34:08
阅读次数:
182
EXTRA_CFLAGS += -D 与CONFIG_ =y
1.
假如定义一个宏CONFIG_DEBUG
在.c里面定义为:#define CONFIG_DEBUG
在makefile里定义为: CONFIG_DEBUG=y
假如说我们想在makefile里为.c文件进入一个宏定义,就用EXTRA_CFLAGS += DCONFIG_DEBUG( 等价于在.c文件里定义#define...
分类:
其他好文 时间:
2015-01-22 15:29:03
阅读次数:
160
1. 在VC中新建win32控制台工程,该工程调用动态链接库my.dll中的函数add,实现加法,代码如下
#include
#include
typedef int(*lpAddFun)(int, int);//宏定义函数指针类型
int main(int argc, char *argv[])
{
HINSTANCE hDll;//DLL句柄
lpAddFun ad...
如果你是一名C程序员,你肯定熟悉宏,它们非常的强大,如果正确使用可以让你的工作事半功倍。然后,如果你在定义宏时,很随意没有认真检查,那么它们可能使得你发狂,浪费N多时间。在很多C程序中,你可能看到许多看起来不是那么直接的较为特殊的宏定义。下面就是一个例子:1 #define _set_taks_st...
分类:
其他好文 时间:
2015-01-21 21:53:14
阅读次数:
168
一,内核模块的概念经常在内核驱动代码看到类似fs_init()等驱动初始化函数,那么这个和module_init()函数的差别在哪里,宏定义__define_initcall(level,fn)对于内核的初始化很重要,他指示编译器在编译的时候,将一系列初始化函数的起始地址值按照一定的顺序放在一个se...
分类:
系统相关 时间:
2015-01-20 22:02:55
阅读次数:
245
linux内核使用bitmap相关1,声明一个bitmap数组,可以表示100个bit,数组名字是bitmap[cpp]view plaincopyDECLARE_BITMAP(bitmap,100)相关宏定义如下:[cpp]view plaincopy#defineDECLARE_BITMAP(n...
分类:
系统相关 时间:
2015-01-20 21:49:58
阅读次数:
380