随笔分类 -  C语言

摘要:在gcc下,#pragma GCC diagnostic push用于记录当前的诊断状态,#pragma GCC diagnostic pop用于恢复诊断状态。 可以用于屏蔽局部代码的警告,格式如下: #pragma GCC diagnostic push #pragma GCC diagnosti 阅读全文
posted @ 2025-01-10 10:57 星辰大海浩瀚宇宙呀 阅读(13) 评论(0) 推荐(0) 编辑
摘要:汇编语言对于大多数程序员来说都是进而远之的,原因当然是汇编语言晦涩难懂,各种指令搞得人头疼,不过汇编语言适当了解一些还是蛮有意思的,今天带大家在Linux上运行第一个汇编程序! 在 Linux 操作系统中,你有很多办法可以实现在屏幕上显示一个字符串,但最简洁的方式是使用 Linux 内核提供的系统调 阅读全文
posted @ 2024-12-26 15:29 星辰大海浩瀚宇宙呀 阅读(48) 评论(0) 推荐(0) 编辑
摘要:GNU C语言的"__thread"与C11关键字_Thread_local等效,这里只说一下C11的。 #define thread_local _Thread_local //(since C11, then removed in C23) Since C23, thread_local is 阅读全文
posted @ 2024-12-25 14:36 星辰大海浩瀚宇宙呀 阅读(47) 评论(0) 推荐(0) 编辑
摘要:并发程序设计把程序执行分成可以同时执行的多个线程。这程序设计带来了新的挑战,包括如何管理访问相同数据的不同线程。C11通过包含可选的头文件stdatomic.h和threads.h,提供了一些可选的(不是必须实现的)管理方法。值得注意的是,要通过各种红函数类访问原子类型。当一个线程对一个原子类型的对 阅读全文
posted @ 2024-12-20 11:08 星辰大海浩瀚宇宙呀 阅读(25) 评论(0) 推荐(0) 编辑
摘要:fork和vfork的差别: fork 是 创建一个子进程,并把父进程的内存数据copy到子进程中。 vfork是 创建一个子进程,并和父进程的内存数据share一起用。 man vfork 一下,你可以看到,vfork是这样的工作的, 1)保证子进程先执行。 2)当子进程调用exit()或exec 阅读全文
posted @ 2024-12-19 15:53 星辰大海浩瀚宇宙呀 阅读(20) 评论(0) 推荐(0) 编辑
摘要:编译器屏障 Compiler barrier /* The "volatile" is due to gcc bugs */#define barrier() __asm__ __volatile__("": : :"memory") 阻止编译器重排,保证编译程序时在优化屏障之前的指令不会在优化屏障 阅读全文
posted @ 2024-03-29 14:10 星辰大海浩瀚宇宙呀 阅读(143) 评论(0) 推荐(0) 编辑
摘要:__builtin_ctz( ) / __buitlin_ctzll( ) 用法:返回括号内数的二进制表示数末尾0的个数 __buitlin_clz( ) / __buitlin_clzll( ) 用法:返回括号内数的二进制表示数前导0的个数 __builtin_popcount( ) 用法:返回括 阅读全文
posted @ 2024-03-22 16:31 星辰大海浩瀚宇宙呀 阅读(152) 评论(0) 推荐(0) 编辑
摘要:1. c++调用的函数前加 "::"代表全局作用域的 2.__attribute__ ((format (printf, 2, 3))); 功能: __attribute__ format属性可以给被声明的函数加上类似printf或者scanf的特征,它可以使编译器检查函数声明和函数实际调用参数之间 阅读全文
posted @ 2024-02-23 17:20 星辰大海浩瀚宇宙呀 阅读(14) 评论(0) 推荐(0) 编辑
摘要:C语言中的register关键字用于向编译器建议将变量存储在寄存器中,以便更快地访问。它是一种优化技术,用于提高程序的执行速度。 使用register关键字可以提高对该变量的访问速度,因为寄存器比内存访问速度更快。然而,使用register关键字并不能保证变量一定会存储在寄存器中,它只是向编译器提出 阅读全文
posted @ 2024-02-19 10:25 星辰大海浩瀚宇宙呀 阅读(48) 评论(0) 推荐(0) 编辑
摘要:gcc内置宏查看:gcc -E -dM - </dev/null 1. __has_include __has_include是一个C++17标准定义的宏,它的用途是检查指定的文件是否存在,从而决定是否继续编译。它可以在头文件包含中使用,这样编译器就可以根据它的返回值来决定是否继续编译,从而提升编译 阅读全文
posted @ 2023-11-21 10:09 星辰大海浩瀚宇宙呀 阅读(175) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示