C/C++ Learning

您正在查看: 随记 分类下的文章

编程常走的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) #...阅读全文