c/c++
c/c++ 一些内容
不搞数学的汤老师
不是各位卷死在下,就是在下卷死各位!
展开
-
C 结构体中的 “:” 用法和对齐规则
“:” 用法 以下摘自 redis 的 serve.h #define LRU_BITS 24 typedef struct redisObject { unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or * LFU data (least significant 8原创 2022-02-06 05:01:33 · 1674 阅读 · 1 评论 -
常量表达式的计算到底由什么完成?
常量表达式的计算由什么完成? 网上答案众说纷纭,有人说是编译器完成计算,又有人说预处理器完成计算。 我在这里给一个明确的答案。由预处理器完成宏替换,由编译器完成常量表达式计算。 // a.c 文件 #define N 3*3+1 int a() { return N; } gcc -E a.c -o a.i 预处理后得到预处理文件。 显然预处理后的常量只是做了简单的替换,并没有计算出结果。 读者可自行验证。 ...原创 2021-10-30 19:16:04 · 422 阅读 · 0 评论 -
const 修饰符与指针、引用
int main() { int a = 0; int b = 1; const int *p = &a; // *p = 10 x,不可改变引用的值 int const *q = &a; // *q = 10 x,不可改变引用的值 int *const r = &a; // *r = &b x,不可改变引用,但可修改引用的值 int &rf = a; // 与上面等价 const int *const cp =原创 2021-01-31 13:06:50 · 167 阅读 · 1 评论 -
c++ 类型别名
别名方式 #include <iostream> using namespace std; #define I1 int typedef int I2; using I3 = int; int main() { I1 a = 0; I2 b = 1; I3 c = 2; cout << a + b + c << endl; return 0; } 使用宏定义 typedef using 区别 using 可以用于模板别名原创 2021-01-31 14:04:35 · 116 阅读 · 0 评论