linux c 日志宏,LINUX C中用define定义可变参数的宏

LINUX C中用define定义可变参数的宏

一般在调试打印Debug信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC也支持可变参数宏, 但是两种在细节上可能存在区别.

1. __VA_ARGS__

__VA_ARGS__ 将 "..." 传递给宏 . 如

#define debug(format, ...) fprintf(stderr, format, __VA_ARGS__)

2. GCC的复杂宏

GCC使用一种不同的语法,从而可以给可变参数一个名字,如同其它参数一样.

#define debug(format, args...) fprintf (stderr, format, args)

这和第一条的宏例子是完全一样的,但是这么写可读性更强并且更容易进行描述.

3. ##__VA_ARGS__

上面两个定义的宏,如果出现 debug("A Message")的时候,由于宏展开后有个多余的逗号,所以将导致编译错误.

为了解决这个问题,CPP 使用一个特殊的"##"操作,格式如下:

#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)

这里,如果可变参数被忽略或为空,"##"操作将使预处理器(preprocessor)去除掉它前面的那个逗号.

相关文档:

一、要求:

1、能够显示出Makefile的总数

2、能显示一级目录下的Makefile总数、Makefile列表及其Makefile的内容

3、能将上述内容写入相应的文件

二、实例

rm -rf ~/Desktop/linux_Makefile/*

for i in `find . -maxdepth 1 -type d`

#仅仅是当前目录,所以请将本脚本放在linux源码目录下执行。

do

e ......

一个

Linux

发行版,体积很小,用处反而很大。此话当真?

一般而言,老式计算机内存都不大, ......

未完待续...

设置时间:

date -s "2009/11/08 11:23:00"

硬件时钟与系统时间同步一下:

hwclock --systohc

编程:

#include

time_t time(time_t *timer)

调用后将当前系统时间与1900年1月1日相差的秒数存入到timer中,timer可看成是一个长整型数

具体描述:

函数原型:  ......

一边学习ubuntu,一边发现问题,目前发现的问题有以下几个,并成功解决。

首先,打开firefox,flash不能正确显示,安装adobe  flash  最新插件就可以解决,其他flash插件效果不太好。后来打开QQ农场的flash,中文显示空格,解决方法,打开终端,输入以下命令: ......

#include

#include

#include

int main()

{

#ifdef _WIN32

setlocale(LC_ALL, "chs");

#else

setlocale(LC_ALL, "zh_CN.UTF-8");

#endif

wchar_t KZg[] = {0x6211, 0};

char buf[10] = {0};

wcstombs ......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值