1.error 在/usr/include/errno.h中,include了<sys/errno.h>,在该文件中定义了不同的errno的值(错误类型编号)所对应的宏以及错误类型.
许多标准的C库函数都通过全局变量errno向程序传递一个错误号,以表明发生哪种错误.
2.strerror函数:
#include <string.h> char *strerror( int errnum );
strerror()函数用来依靠参数errnum的错误代码来查询其错误原因的描述,然后将字符串指针返回。
其中errnum一般为全局变量 error;即要包含#include<errno.h>头文件。
当程序出现错误时,系统会自动给error赋值。
但你不能根据errno的值判断程序是否出错。因为当error被赋值后,它可能不会自动清值。只有当你的程序出错时,你可以用它输出错误原因。
3.va_list 的使用 两个例子
3.1 子函数中以宏定义形式使用----
#include<stdio.h>
#include<stdarg.h>
#define VARLIST_STRINGDUMP(BUF,VARS,FROM,SFMT) /
/
va_start(VARS,FROM);/
vsprintf(BUF,SFMT,VARS);/
va_end(VARS);
int print(char *buffer,const char * form,...)
{
va_list params;
VARLIST_STRINGDUMP(buffer,params,form,form);
printf("it is right!/n");
return 0;
}
int main()
{
char buffer[50];
int first=100;
int last=200;
char buf[]="zhongguo";
char format[]="%d--%s--%d";
print(buffer,format,first,buf,last);
return 0;
}
3.2 子函数中直接使用
#include<stdio.h>
#include<stdarg.h>
int print(const char * form,...)
{
va_list p;
int value;
va_start(p,form);
value=vprintf(form,p);
va_end(p);
return value;
}
int main()
{
int print(const char * form,...);
int firt=100;
int last=234;
char buf[]="name is fidel";
print("%d--%s--%d",firt,buf,last);
return 0;
}
4.续行符的使用:
宏定义中语句太长,写到一行里太长,不便于查看,可以使用续行符‘/’在代码可以用空格间隔的地方续行。
例子:
#define a /
int a;/
int b;
上面的内容相当于 #define a int a;int b;
【注意】续行符后面必须紧跟换行符
**************************************************