c语言如何包装函数 c++包装类( 二 )


if (level != 3)
{
//the num use to control file naming
log-num = num;
if(num)
snprintf(new_path, 128, "%s%d", path, (int)time(NULL));
else
snprintf(new_path, 128, "%s.new", path);
if(-1 == (log-fd = open(new_path, O_RDWR|O_APPEND|O_CREAT|O_SYNC, S_IRUSR|S_IWUSR|S_IROTH)))
{
free(log);
log = NULL;
return NULL;
}
}
strncpy(log-path, path, 128);
log-size = (size0 ? size:0);
log-level = (level0 ? level:0);
return log;
}
四、定义log_debug函数
view plaincopy to clipboardprint?
void log_debug(log_st *log, const char *msg, ...)
{
va_list ap;
time_t now;
char *pos;
char _n = '\n';
char message[BUF_SIZE] = {0};
int nMessageLen = 0;
int sz;
if(NULL == log || 0 == log-level) return;
now = time(NULL);
pos = ctime(now);
sz = strlen(pos);
pos[sz-1]=']';
snprintf(message, BUF_SIZE, "[%s ", pos);
for (pos = message; *pos; pos++);
sz = pos - message;
va_start(ap, msg);
nMessageLen = vsnprintf(pos, BUF_SIZE - sz, msg, ap);
va_end(ap);
if (nMessageLen = 0) return;
if (3 == log-level)
{
printf("%s\n", message);
return;
}
if (2 == log-level)
printf("%s\n", message);
write(log-fd, message, strlen(message));
write(log-fd, _n, 1);
fsync(log-fd);
}
五、定义log_checksize函数
view plaincopy to clipboardprint?
void log_checksize(log_st *log)
{
struct stat stat_buf;
char new_path[128] = {0};
char bak_path[128] = {0};
if(NULL == log || 3 == log-level || '\0' == log-path[0]) return;
memset(stat_buf, 0, sizeof(struct stat));
fstat(log-fd, stat_buf);
if(stat_buf.st_sizelog-size)
{
close(log-fd);
if(log-num)
snprintf(new_path, 128, "%s%d", log-path, (int)time(NULL));
else
{
snprintf(bak_path, 128, "%s.bak", log-path);
snprintf(new_path, 128, "%s.new", log-path);
remove(bak_path); //delete the file *.bak first
rename(new_path, bak_path); //change the name of the file *.new to *.bak
}
//create a new file
log-fd = open(new_path, O_RDWR|O_APPEND|O_CREAT|O_SYNC, S_IRUSR|S_IWUSR|S_IROTH);
}
}
c语言怎么声明函数定义函数
C 语言中的函数定义的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
在 C 语言中,函数由一个函数头和一个函数主体组成 。下面列出一个函数的所有组成部分:
返回类型:一个函数可以返回一个值 。return_type 是函数返回的值的数据类型 。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void 。
函数名称:这是函数的实际名称 。函数名和参数列表一起构成了函数签名 。
参数:参数就像是占位符 。当函数被调用时 , 您向参数传递一个值,这个值被称为实际参数 。参数列表包括函数参数的类型、顺序、数量 。参数是可选的,也就是说,函数可能不包含参数 。
函数主体:函数主体包含一组定义函数执行任务的语句 。
C语言如何封装printf函数你输入6后回车,程序先读入6 , 不是回车,输出6,然后读入回车结束循环,在输出yes,所以结果是6yes 。
注意:while循环就只有一个语句:printf("%c",c);
printf("yes");语句是在while循环外的,所以只要while循环结束就会输出yes 。
c语言中要封装一个函数( 比如什么printf之类的),肯定得用.c和.h文件,函数声明在.h文件中.函数实现在c文//mvector.h -- 声明
#ifndef MVECTOR_H_
#define MVECTOR_H_
typedef struct _mvect
{
int x;

推荐阅读