随笔分类 - C_CPP
摘要:string函数分析string函数包含在string.c文件中,经常被C文件使用。1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把str2指向的字符串拷贝到str1中去函数返回: 返回str1,即指向str1的指针 /** * s
阅读全文
摘要:0. static修饰变量和函数 static修饰变量,1)限定作用域,本文件内。全局变量(自定义起,本文件前面要用需extern声明),局部变量函数内;2)生命周期,程序运行期间一直保存。 static修饰函数,限定作用域,本文件内。 1. enum类型变量大小为4(sizeof),不论enum成
阅读全文
摘要:转自:Uboot中start.S源码中指令级的详尽解析 green-waste为何 C 语言(的函数调用)需要堆栈,而汇编语言却需要堆栈之前看了很多关亍uboot的分析,其中就有说要为C语言的运行,准备好堆栈。而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有堆栈指针初始化这个动
阅读全文
摘要:在C&C++中 一、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 取代这种形式的原因如下:
阅读全文
摘要:一、__attribute__((weak, alias()))) 弱符号 若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak symbol(弱符号),则这些全局符号不会引发重定义错误。链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可
阅读全文
摘要:curl.se libcurl is a free and easy-to-use client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAP
阅读全文
摘要:什么是原子类型 用_Atomic(类型名)这种方式修饰的类型是原子类型,在实际使用原子类型时应当避免直接使用_Atomic(类型名)这种形式,而是直接用<stdatomic.h>头文件中已经定义好的原子类型。此外该头文件还有相应的原子操作函数。 常用的原子类型 typedef _Atomic _Bo
阅读全文
摘要:一、可变参数宏__VA_ARGS__ __VA_ARGS__ 是一个可变参数的宏,定义为宏定义中参数列表的最后一个参数为省略号(也就是三个点)。 这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,替换省略号所代表的字符串。比如: #define PR(...) printf(__VA_A
阅读全文
摘要:转自:http://www.cnblogs.com/lyq105/archive/2009/11/28/1612677.html C语言函数sscanf()的用法sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string
阅读全文
摘要:size_t strspn (const char *s,const char * accept); strspn返回s中第一个不在accept中出现过的字符下标。 Returns an integer value specifying the length of the substring in
阅读全文
摘要:time函数 time #include<time.h> time_t time(time_t *t); typdef long int time_t; time() returns the time as the number of secs since 1970-01-01 00:00:00 +
阅读全文
摘要:字符(串)输入输出函数 输出函数 #include <stdio.h> int fputc(int c, FILE *stream); int fputs(const char *s, FILE *stream); int putc(int c, FILE *stream); int putchar
阅读全文
摘要:1. epoll基础 epoll - I/O event notification facility epoll是一种I/O事件通知机制,这句话基本上包含了所有需要理解的要点: I/O事件 基于file descriptor,支持file, socket, pipe等各种I/O方式。 当文件描述符关
阅读全文
摘要:一、select #include <sys/select.h> void FD_CLR(int fd, fd_set *set); int FD_ISSET(int fd, fd_set *set); void FD_SET(int fd, fd_set *set); void FD_ZERO(f
阅读全文
摘要:系统调用返回值判断 系统调用不能保证每次都成功,必须进行出错处理,这样一方面可以保证程序逻辑正常,另一方面可以迅速得到故障信息。 错误处理 errno由libc定义的全局变量,每个错误原因对应一个错误码,errno在头文件errno.h中声明,是一个整型变量,都是正整数(系统错误号都是正整数)。 I
阅读全文
摘要:转自:标准输入输出 stdio 流缓冲 buffering in standard streams 原文:http://www.pixelbeat.org/programming/stdio_buffering 参考:输出流缓冲的意义 何时缓冲 Stdout Buffering 原文:https:/
阅读全文
摘要:在对断言的使用中,一定要遵循这样一条规定:对来自系统内部的可靠的数据使用断言,对于外部不可靠数据不能够使用断言,而应该使用错误处理代码。 换句话说,断言是用来处理不应该发生的非法情况,而对于可能会发生且必须处理的情况应该使用错误处理代码,而不是断言。(如内部程序调用中参数的判断用assert,而ma
阅读全文
摘要:内存分区 内存分布分为5个部分,从高地址到低地址依次为栈区(stack),堆区(heap),未初始化数据段(uninitialized data),初始化数据段(initialize data)和代码段(text)。 有些文档也把初始化的数据段和未初始化的数据段合称全局区。 1. 文本段--只读、共
阅读全文
摘要:1. 一般用法: 使用#把宏参数变成一个字符串,用##把两个宏参数贴合在一起。 2. 当宏参数是另一个宏的时候 需要注意的是凡宏定义里有‘#’或‘##’的地方宏参数是不会展开的。 转自:http://www.linuxidc.com/Linux/2014-06/102925.htm 有一道经典的C语
阅读全文
浙公网安备 33010602011771号