您正在查看: 随记 分类下的文章
编程常走的10个弯路
面向编译器写代码,而不是面向用户当人们使用编译器创建自己的 app 时,在把自己的想法诉诸于机器代码的过程中,常常会将那些可以使得编程更为简单却又冗长的语法遗忘于脑后。无论你使用的是单字母的标识符还是更易于人脑理解的标识符,对于编译器而言,毫无区别。编译器不在乎你写的是否是优化表达式,也不在乎你是否用括号封装了子表达式。编译器要做的就是将这些人脑可读的代码,解析为抽象的语法树,并将这些树转换...阅读全文
常见字符串处理库函数实现
1.strchr2.strstr3.strcat4.strcpy5.strncpy6.strcmp7.strncmp8.atol9.atoisize_t类型 typedef unsigned int size_t;
<h3 id="1">1、strchr</h3> /***
*char *strchr(string, c) - se...阅读全文
linux用户态程序调试总结
Linux下的用户空间调试工具和技术,它们用来分析用户空间的问题相当有用,主要有下面几种:1.printf打印2./proc查询3.strace和ltrace4.Valgrind5.gdb6.splint静态分析工具7.prof/gprof性能分析工具8.ElectricFence内存调试9.binutil系列工具<h3 id="1">1.printf打印&l...阅读全文
gdb带参数调试,until、watch用法
1、程序运行参数。set args 可指定运行时参数。(如:set args 10 20 30 40 50) show args 命令可以查看设置好的运行参数。(如:set args 10 20 30 40 50)
还有一种方法是:run args 之后再进行调试;2、until设置只能在循环开始处设置有效;3、watch监视变量发生,类似条件断点,也可以watch一个条件表达式;watc...阅读全文
正确的使用snprintf
1、原型 #include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(c...阅读全文
open和_open文件控制标志
1、Windowsdefine O_RDONLY 0x0000define O_WRONLY 0x0001define O_RDWR 0x0002define O_APPEND 0x0008define O_CREAT 0x0100define O_TRUNC 0x0200define O_EXCL ...阅读全文
GNU结构体中的0长数组使用
在标准 C 和 C++ 中,不允许用 0 长度数组,但在 GNU C 中,却可以定义 0 长度数组;struct line
{
int length ;
char contents[0];
};
0 长度数组不占有空间,从打印 sizeof (struct line) 可以看到这个结构体的长度为 4,这 4 字节空间属于整型量 length 。那么结构体里最后的 0 长度...阅读全文
有关void *、(void (*)()) 、void (*)()
void指针是空类型指针,它不指向任何类型,即void指针仅仅是一个地址,所以空类型指针不能进行指针运算,也不能进行间接引用(因为指针运算和间接引用都需要指针的类型信息)。例如: void * p; //仅仅表示p存放一个地址
p++; //error:+、-运算离不开指针类型
*p=20.5; //error:访问p指向的变...阅读全文
inline、__inline、__inline__、__forceinline、__attribute__((always_inline))编译器依赖
1、inline is the keyword, in C++ and C99.2、__inline is a vendor-specific(厂商特定) keyword (e.g. MSVC) for inline function in C, since C89 doesn't have it.3、__inline__ is similar to __inline but is from...阅读全文
gcc优化中的likely和unlikely
#ifdef __GNUC__
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#else
#define likely(x) (x)
#define unlikely(x) (x)
#...阅读全文