一、 总览
1.1库函数
**函数名** | **头文件** | **功能** | **原型** | **说明** |
syslog | syslog.h | 记录至系统记录(日志) | void syslog(int, const char *, ...) __printflike(2, 3) | 参数1:优先级,参数2:要输出到系统日志的 参数3:(格式化)字符串 |
perror | stdio.h | 将上个函数错误原因输出至stderr | void perror(const char *) | 参数:要优先打印到stderr的字符串 |
memset |
string.h
/memory.h | 将指定内存区域全部设置为默认ASCII码值 | void *memset(void *, int, size_t) | 参数1:指定内存块指针
参数2:字符ASCII码 参数3:要初始化的内存前n个字节数 |
bzero | strings.h | 置字符串前n个字节=0,且包括'\0' ,
已被舍弃,由memset取代; 类似的有bcopy,bcmp等 | void bzero(void *, size_t) | 参数1: 指定内存块指针
参数2: 要初始化为0的内存前n个字节 |
abort | stdlib.h | 引发程序不正常终止 | void abort(void) __dead2
#define __dead2 __attribute__((noreturn)) | 无参数
__attribute__((noreturn)) 表示希望自定义有返回值函数不想返回值 |
**宏定义** | **头文件** | **功能** | ****原型**** | ****说明**** |
assert | assert.h | 断言,用于调试时判断表达式是否通过验证
(真:通过;假:未通过) | #define assert(e) \ ((void) ((e) ? ((void)0) : __assert (#e, __FILE__, __LINE__))) #define __assert(e, file, line) \ ((void)printf ("%s:%u: failed assertion `%s'\n", file, line, e), abort()) | e:表达式的值
__FILE__:文件名 __LINE__:当前代码行号 |
1.2宏定义
1)几个ANSI C标准定义的编译器内置宏
LINE:在源代码中插入当前源代码行号;
FILE:在源文件中插入当前源文件名;
DATE:在源文件中插入当前的编译日期
TIME:在源文件中插入当前编译时间;
STDC:当要求程序严格遵循ANSI C标准时该标识被赋值为1;
__cplusplus:当编写C++程序时该标识符被定义。
2.函数实现源码
2.1 memset 常用于内存空间初始化
1 /**
2 *
3 * 原型:void *memset(void *buffer, int c, int count);
4 * 头文件:string.h 或memory.h
5 * 功能:把buffer所指内存区域的前count个字节设置成字符c
6 * 参数: buffer 要设置值的内存区域首地址指针
7 * c 字符ASCII码
8 * count 内存区域字节数
9 * 返回值: 置成字符c后的内存区域首地址指针
10 * 说明:返回指向buffer的指针。
11 */
12 void *memset(void *src, int c, size_t count)
13 {
14 assert(src != NULL);
15 char *tmpSrc = (char *)src;
16 while (count --) {
17 *tmpSrc =(char)c;
18 tmpSrc ++;
19 }
20 return src;
21 }
e.g 使用,如初始化一个结构体
struct Grade
{
char name[30];
int score;
};
struct Student
{
uint16_t id;
char name[20];
char sex;
struct Grade grade;
};
//初始化
void init(){
struct Student student;//开辟内存空间
memset((void*)&student, 0, sizeof(struct Student));//结构体student所指向内存空间全部=(char)0//开辟内存空间
}
原文链接: https://www.cnblogs.com/fortunely/p/4883937.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/223108
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!