随笔分类 - 【01】C语言
摘要:结构体赋值 例如: #include <stdio.h> #include <string.h> struct Inner { int x; char name[20]; }; struct Outer { int id; struct Inner inner; }; 初始化赋值(定义时): str
阅读全文
摘要:__thread Thread Local Storage:线程局部存储(tls)分配的变量,每个当前线程有一个该变量的实例。__thread是gcc内置的线程局部存储设施,其存储效率可以和全局变量相比;__thread变量在每一个线程中都有一份独立实例,各线程值是互不干扰的。可以用来修饰那些带有全
阅读全文
摘要:参考资料 1. 原子操作_atomic 系列函数
阅读全文
摘要:gcc内置原子操作 从GCC4.1.版本之后就引入了内置的原子操作函数,可对x86_64架构(除此之外还有其他类型)1、2、4、8字节的integer scalar或pointer使用,可有效减少对锁机制的使用进一步而提升效率,这些函数以__sync开头,而在GCC4.7之后的版本,这些函数被替换成
阅读全文
摘要:va_start和va_end使用详解 函数参数是以数据结构:栈的形式存取,从右至左入栈。首先是参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址,例如: void func(int x, float y, char z); 调用函数的时候
阅读全文
摘要:__VA_ARGS__和__VA_OPT__ 1. #用来把参数转换成字符串: #include <stdio.h> #define P(A) printf("%s: %d\n", #A, A); int main(int argc, char **argv) { int a = 1, b = 2;
阅读全文
摘要:位域 基础语法: struct 结构体名 { 数据类型 成员名 : 位数; 数据类型 成员名 : 位数; }; 示例: #include <iostream> struct Flags { unsigned int a : 1; // 占1位 unsigned int b : 2; // 占2位 u
阅读全文
摘要:数据对齐 1)平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常2)硬件原因:经过内存对齐之后,CPU的内存访问速度大大提升。 1. 对齐原则: 【原则1】数据成员对齐规则:结构(struct)(或联合(union
阅读全文
摘要:函数 offsetof 的用法 offsetof()是一个宏, 返回 结构体成员 在内存中的偏移量。 1. 实例 #include<stdio.h> #include<stddef.h> struct S { char c1; int a; char c2; }; int main() { //of
阅读全文

浙公网安备 33010602011771号