优雅的宏定义
2015-07-10 09:56
211 查看
优雅的宏定义
打印:
[/code]
[/code]
![](http://images0.cnblogs.com/blog/491589/201507/100955470331556.jpg)
![](http://images0.cnblogs.com/blog/491589/201507/100955510645325.jpg)
![](http://images0.cnblogs.com/blog/491589/201507/100955525022852.jpg)
[/code]
![](http://images0.cnblogs.com/blog/491589/201507/100955537686366.jpg)
来自为知笔记(Wiz)
打印:
#define DBG_vPrintf(a,b,ARGS...) do { if (a) printf(b, ## ARGS); } while(0)
#define DBG_vAssert(a,b) do { if (a && !(b)) printf(__FILE__ " %d : Asset Failed\n", __LINE__ ); } while(0)
[/code]
#define UI_BLUE(x) "\e[34;1m"x"\e[0m"
#define UI_GREEN(x) "\e[32;1m"x"\e[0m"
#define UI_YELLOW(x) "\e[33;40;1m"x"\e[0m"
#define UI_RED(x) "\e[31;1m"x"\e[0m"
#define DBG_ERR if (defined_dbg & DBG_ERROR) \
printf(UI_RED("[WIFI-ERR]")" %s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__); \
printf
#define DBG_INFO if (defined_dbg & DBG_INFOR) \
printf(UI_BLUE("[WIFI-INFO]")" %s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__); \
printf
#define DBG_DBG if (defined_dbg & DBG_DUBGER) \
printf(UI_GREEN("[WIFI-DBG]")" %s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__); \
printf
#define DBG_WAN if (defined_dbg & DBG_WANNING) \
printf(UI_YELLOW("[WIFI-DBG]")" %s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__); \
printf
[/code]
![](http://images0.cnblogs.com/blog/491589/201507/100955470331556.jpg)
![](http://images0.cnblogs.com/blog/491589/201507/100955510645325.jpg)
![](http://images0.cnblogs.com/blog/491589/201507/100955525022852.jpg)
6.标号元素
标准 C 要求数组或结构体的初始化值必须以固定的顺序出现,在 GNU C 中,通
过指定索引或结构体成员名,允许初始化值以任意顺序出现。
指定数组索引的方法是在初始化值前添加“ [INDEX] =” ,当然也可以用
“[FIRST … LAST] =”的形式指定一个范围。例如下面的代码定义一个数组,并把其
中的所有元素赋值为 0:
unsigned char data[MAX] = { [0 ... MAX-1] = 0 };
下面的代码借助结构体成员名初始化结构体:
struct file_operations ext2_file_operations =
{
llseek: generic_file_llseek,
read: generic_file_read,
write: generic_file_write,
ioctl: ext2_ioctl,
mmap: generic_file_mmap,
open: generic_file_open,
release: ext2_release_file,
fsync: ext2_sync_file,
};
但是,Linux 2.6 推荐类似的代码应该尽量采用标准 C 的方式,如下所示:
struct file_operations ext2_file_operations =
{
.llseek = generic_file_llseek,
.read = generic_file_read,
.write = generic_file_write,
.aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write,
.ioctl = ext2_ioctl,
.mmap = generic_file_mmap,
.open = generic_file_open,
.release = ext2_release_file,
.fsync = ext2_sync_file,
.readv = generic_file_readv,
.writev = generic_file_writev,
.sendfile = generic_file_sendfile,
};
[/code]
![](http://images0.cnblogs.com/blog/491589/201507/100955537686366.jpg)
来自为知笔记(Wiz)
相关文章推荐
- 提升网站性能之设置gzip
- -Xlint:deprecation
- JQuery 简单入门
- xml序列化与反序列化
- ios项目(十六)
- java
- Codeforces Round #310 (Div. 1) A B C D题
- WEKA使用教程(经典教程转载)
- ubuntu grub修改 启动时间 启动项选择
- Eclipse -- An API baseline has not been set for the current workspace
- Eclipse设置完整的Java代码提示
- 开源框架Quartz动态添加、修改和删除定时任务 (二)
- C++ 引用
- 安卓学习之路2——配置genymotion模拟器
- Linux 安装
- 用Parallel.For()和Parallel.For<TLocal>()方法实现并行运行迭代
- kafka教程
- C#实现根据银行卡卡号判断银行名
- Fatal NI connect error 12170
- Dynamic Data linq to SQL Web Application