![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高级C语言
文章平均质量分 87
从善若水
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
展开
-
【高级C语言】从汇编代码看volatile关键字的作用
编译器可能对代码中的变量读、写进行适当的优化,避免没有必要的内存读写操作,这往往会大幅度提升程序的执行效率。但编译器也是程序,只能针对特定情况做特定的优化,当程序变得复杂时,编译器也未必能完全领会程序员的意图,所以,有些时候这种优化是有害的;volatile关键字,就是能用于避免编译器优化的关键字,用来保证每次变量的读写都是针对内存进行的;特别是不会让编译器把某些变量当作常量来对待;在编译器不开优化的情况下,很多时候,是否加volatile,不会有任何差异。原创 2024-02-16 15:18:00 · 888 阅读 · 0 评论 -
【开发语言】C语言与Python的互操作详解
PyConfig_InitPythonConfig() # 初始化一个PyConfig对象PyConfig_Read() # 读取当前环境的配置信息Py_InitializeFromConfig() # 使能客制化的Python环境其中一个重要的结构图是PyConfig,几个关键的属性含义如下:# 只有设置为1时,下面的变量才生效# 增加指定的搜索路径定义一个类的关键数据类型是,这个类型中定义了一些类的属性:tp_name:类的名字(格式为modulename.classname)原创 2023-09-03 21:59:19 · 5973 阅读 · 1 评论 -
【高级C语言】关于if-else的性能问题
if-else 这样写可以提升27%的代码性能原创 2022-03-27 22:36:25 · 2599 阅读 · 6 评论 -
【高级C】GNU C/C++ 内联汇编——进阶——语法详解
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2022-02-25 22:17:29 · 1573 阅读 · 2 评论 -
【高级C】GNU C/C++ 内联汇编——Intel与ATT汇编语法对比
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2022-03-05 14:58:08 · 1563 阅读 · 3 评论 -
【高级C】GNU C/C++ 内联汇编——实例参考
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2022-03-05 14:57:41 · 1065 阅读 · 1 评论 -
【高级C】GNU C/C++ 内联汇编——补充介绍
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2022-03-04 19:47:48 · 761 阅读 · 1 评论 -
【高级C】GNU C/C++ 内联汇编——进阶——约束详解
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2022-02-28 22:11:32 · 1964 阅读 · 0 评论 -
【高级C】GNU C/C++ 内联汇编——入门级
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2022-02-25 22:14:29 · 1672 阅读 · 1 评论 -
【高级C】GNU C/C++ 内联汇编编程指南全集
《GNU C/C++ 内联汇编编程指南全集》《GNU C/C++ 内联汇编——入门级》《GNU C/C++ 内联汇编——进阶——语法详解》《GNU C/C++ 内联汇编——进阶——约束详解》《GNU C/C++ 内联汇编——补充介绍》《GNU C/C++ 内联汇编——实例参考》《GNU C/C++ 内联汇编——Intel与ATT汇编语法对比》原创 2022-02-25 22:12:46 · 1782 阅读 · 1 评论 -
【高级C】手把手教你分解C语言中复杂的变量声明
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!博主链接文章目录解析C语言中复杂的变量声明C语言解析变量声明的优先级规则本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云原创 2021-10-23 16:55:00 · 753 阅读 · 2 评论 -
关于fork()函数的查漏补缺,赶紧来测测能答对几道题
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!博主链接文章目录两道测试题第一题第二题第三题第四题再看fork()函数如何避免重复输出两道测试题第一题下题打印多少个 “-” ?#include <stdio.h>#include <unistd.h>int main(void) { int i; for (i = 0; i < 2; i++) { fork(); printf("-");原创 2021-10-16 12:45:32 · 221 阅读 · 3 评论 -
【高级C】__attribute__((aligned(n))) 与 #pragma(pack(n))的区别
文章目录__attribute__((aligned(n))) 与 #pragma(pack(n))的区别一、正确理解__attribute__((aligned(x)))二、正确理解 #pragma(pack(n))三、详解开篇例题3.1 例题一解答3.2 例题二解答3.3 例题三解答四、注意__attribute__ ((aligned (n)))的位置本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客原创 2021-08-10 00:02:22 · 1651 阅读 · 8 评论 -
C语言堆栈帧介绍
C语言堆栈帧介绍【32bit Windows】文章目录C语言堆栈帧介绍【32bit Windows】什么是堆栈帧?堆栈帧的创建方法????????【32bit Windows】本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 &nb原创 2021-08-01 20:09:38 · 1006 阅读 · 6 评论 -
【精通C语言】extern char k[] != extern char *k
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算,端计算) 高级C语言讲解  .原创 2021-06-20 19:52:19 · 417 阅读 · 4 评论 -
【精通C语言】C99伸缩型数组成员(Flexible array member)
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。文章目录C99伸缩型数据成员C99伸缩型数据成员 C99新增一个特性:伸缩型数组成员(Flexible array member)...原创 2021-06-07 21:35:27 · 1198 阅读 · 46 评论 -
【精通C语言】ANSI C 类型限定符const,volatile,restrict,_Atomic
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。文章目录ANSI C 类型限定符1️⃣const 类型限定符 在指针和形参声明中使用const2️⃣volatile 类型限定符3️⃣restrict 类型限定符4️⃣_Atomic 类型限定符➰旧关键词新用法ANSI C 类型限定符 我们通常使用类型和存储.原创 2021-06-02 23:20:29 · 657 阅读 · 34 评论 -
【精通C语言】一图搞清C语言到底有多少种变量存储类别
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。文章目录C变量存储类别C变量存储类别存储类别存储期作用域链接声明方式自动自动块无块内寄存器自动块无块内,使用关键字register静态外部链接静态文件外部所有函数外静态内部链接静态文件内部所有函数外,使用关键字static静态无链接静态块无块内,使用关键字static.原创 2021-05-31 23:16:51 · 1251 阅读 · 44 评论 -
【精通C语言】深度解析C变量作用域、链接和存储期的含义
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。文章目录C变量作用域、链接和存储期的含义一、基本术语 1.1 什么是对象(object) 1.2 什么是标识符(identifier)二、作用域、链接和存储期三者关系三、作用域详解 3.1 块作用域 3.1.1 块概念的扩展 3.2.原创 2021-05-29 23:25:03 · 1073 阅读 · 45 评论 -
C语言面试必备——char a[]=“从善若水“ 与 char *p=“从善若水“ 的区别
本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。文章目录一、字符串数组的初始化二、“*const char arr[] = 字面量* ”与“*const char \*pt = 字面量* ”的区别2.1 对于“*const char arr[] = 字面量* ”2.2 对于“*const char \*pt = 字面量* ”一、字符串数组的初始化我们通常使用下面的code进行字符串数组的初始化:con.原创 2021-05-25 22:45:20 · 1412 阅读 · 28 评论 -
C语言面试干货——指定结构体初始化器(GCC手册解析)
文章目录指定结构体初始化器(Designated Initializers)背景初始化struct初始化union对于重复初始化的说名本人就职于国际知名终端厂商,负责modem芯片研发。在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。指定结构体初始化器(Designated Initializers)背景在ISO C90中,初始化数组或者结构体要求每个元素按照固定的顺序出现,带来的问题就是如果我们想初始化数组或结构体中的某个元素,那我们必须也手动初始化这个原创 2021-05-25 12:31:29 · 884 阅读 · 13 评论 -
C语言面试干货——指定数组初始化器(GCC手册解析)
文章目录原创 2021-05-25 12:30:39 · 770 阅读 · 13 评论 -
C语言面试必备——C语言自增/自减操作的陷阱
文章目录C语言自增/自减操作在表达式求值中的陷阱自增/自减在表达式求值中的陷阱在printf中使用自增/自减的陷阱自增/自减面试常问问题C语言自增/自减操作在表达式求值中的陷阱自增/自减在表达式求值中的陷阱在printf中使用自增/自减的陷阱自增/自减面试常问问题...原创 2021-05-20 23:58:52 · 1091 阅读 · 26 评论 -
GCC手册解析——内嵌函数(非闭包函数)
文章目录GCC手册解析——内嵌函数内嵌函数的使用内嵌函数的定义内嵌函数访问scope外的变量内嵌函数被其它函数调用内嵌函数内进行JumpGCC手册解析——内嵌函数首先强调这是GNU C的扩展,GUN C++不支持这一特性且标准C中也不支持这一特性内嵌函数不是闭包函数,因为内嵌函数使用的scope外的变量是存储在栈上的内嵌函数的使用内嵌函数的定义内嵌函数定义在一个函数或者花括号内,只要是可以定义变量的地方就可以定义内嵌函数(也可以对内嵌函数进行声明,但是需要添加auto关键字)内嵌函数总原创 2021-05-15 23:21:17 · 867 阅读 · 6 评论 -
GCC手册解析——变长数组
文章目录GCC手册解析——变长数组历史变长数组的声明以及内存管理前置声明GCC手册解析——变长数组历史可变数组是在ISO C99中引入的,GCC对其进行扩展在C90中也可以使用变长数组的声明以及内存管理可变数组的声明与常规数组声明一样,只不过将常量(constant expression)变成了一个变量。 ...... char const_length_array[10]; //常规数组声明 int variable_length=10; char variable_length_原创 2021-05-12 23:24:42 · 720 阅读 · 5 评论 -
C语言 GOTO 你不知道的事情
C语言 GOTO 你不知道的事情文章目录C语言 GOTO 你不知道的事情错误Code编译器报错内容为什么会出现怎么解决错误Code#include <stdio.h>int main(){ int a=1,b=2; goto End; int c[b];End: return 0;} 编译器报错内容In function 'main':[Error] jump into scope of identifier with va原创 2021-02-26 13:53:10 · 1521 阅读 · 3 评论 -
C语言switch你不知道的一些事情
文章目录C语言switch你不知道的一些事情C语言switch的“BUG”switch的default只能放在最后吗?switch的case中可以声明变量吗?C语言switch你不知道的一些事情C语言switch的“BUG”先抛出一个问题,下面的code运行结果是什么?#include<stdio.h>int main(){ int a=2; switch(a) { a=3; case 2: printf("a is %d.\n",a); break原创 2021-04-24 22:12:20 · 2094 阅读 · 10 评论 -
关于C语言strtok/strtok_s函数不得不知的一件事
文章目录strtok/strtok_sstrtok/strtok_s以strtok为例前几天使用strtok函数,程序一直报告Segmentation fault错误程序如下:#include<string.h>#include<stdio.h>int main(){ char * str = "this is test code"; char *res=str; while(res = strtok(res , " ")) { printf("%s原创 2021-04-24 21:50:01 · 778 阅读 · 5 评论 -
线程池Code详解
文章目录线程池Code详解线程池原理图使用方法线程池Code详解本文介绍一个简单的线程池Code,首先介绍一些术语以方便后续code的理解Thread pool这是一个工作服务器线程池,将一系列的工作线程映射到CPU内核。每个工作线程循环的从相同的输入队列中获取工作,如果有返回值则工作线程会将返回值放到返回值队列。在这个线程池中允许取消任务,例如,通过之前任务的返回值,考虑某个已经被放到任务队列但还没有执行的任务再执行已经没有意义。Jobs任务的结构体是notifiedFIFO_elt_t(结原创 2021-04-15 23:57:12 · 601 阅读 · 2 评论 -
C语言的“bug“ 隐式类型转换
文章目录C语言的"bug" 隐式类型转换原始code希望的输出实际输出为什么正确codeC语言的"bug" 隐式类型转换原始code#include<stdio.h>#include<string.h>int main(){ const char * test_str="C trap"; printf("pre-view the length of test_str is %u.\n",strlen(test_str)); if(-1 < strl原创 2021-03-08 23:31:23 · 475 阅读 · 6 评论