C/C++
文章平均质量分 59
taoyuanforrest
这个作者很懒,什么都没留下…
展开
-
C11与C++11关于Atomic原子类型的异同
头文件C11 使用。C++11 使用。数据类型C11 使用atomic_int等_Atomic类型定义。C++11 使用模板类。初始化C11 推荐使用宏进行初始化,也可以直接赋值。C++11 通过构造函数直接初始化。操作函数C11 使用标准库函数,如。C++11 使用类成员函数,如storeload。编译参数C11 需要使用-std=c11。C++11 需要使用-std=c++11。原创 2024-06-17 09:51:39 · 481 阅读 · 0 评论 -
GNU C 宏构造利器:语句表达式
GNU C 对 C 标准作了扩展,允许在一个表达式里内嵌语句,允许在表达式内部使用局部变量、for 循环和 goto 跳转语句。这样的表达式,我们称之为语句表达式。({ 表达式1;表达式2;表达式3;})语句表达式最外面使用小括号()括起来,里面一对大括号{}包起来的是代码块,代码块里允许内嵌各种语句。语句的格式可以是 “表达式;”这种一般格式的语句,也可以是循环、跳转等语句。跟一般表达式一样,语句表达式也有自己的值。语句表达式的值为内嵌语句中最后一个表达式的值。我们举个例子,使用语句表达式求值。转载 2024-06-14 16:08:05 · 82 阅读 · 0 评论 -
[转载] linux内核中GNU C和标准C的区别
linux 系统上可用的C编译器是GNU C编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布。GNU C对标准C进行进一步扩展,以增强标准C的功能。转载 2024-06-14 15:09:25 · 64 阅读 · 0 评论 -
C语言 json parser - JSMN
json parser jsmn原创 2023-04-04 11:26:33 · 293 阅读 · 0 评论 -
C++ namespace命名空间
C++ namespace原创 2023-03-09 10:40:10 · 211 阅读 · 0 评论 -
添加动态库运行期搜索目录
gcc - I don't understand -Wl,-rpath -Wl, - Stack Overflow运行时动态库:not found 及介绍-Wl,-rpath_Homejim的博客-CSDN博客_rpath原创 2022-01-25 16:27:54 · 339 阅读 · 0 评论 -
gcc/g++区别
1. 下载subversion-deps-1.4.3.tar.gz 和subversion-1.4.3.tar.gzhttp://subversion.tigris.org/downloads/subversion-1.4.3.tar.gzhttp://subversion.tigris.org/downloads/subversion-deps-1.4.3.tar.gz2.解转载 2012-06-09 19:26:25 · 1082 阅读 · 0 评论 -
gcc/g++ inine Function Attributes
准备条件:Hadoop已经安装完毕。从http://flume.apache.org/download.html 下载apache-flume-1.6.0-bin.tar.gz 并解压创建并编辑文件conf/flume-conf.properties,内容如下(这里以netCat为source, HDFS为sink):# example.conf: A single-node Fl原创 2015-08-17 10:10:55 · 912 阅读 · 0 评论 -
源码安装gcc-4.8.5
1)inplace参数对于操纵dataframe的很多函数来说,都有inplace参数,默认为False,当设为True的时候,会修改原有的df,比如:df.fillna(..., inplace=True),df将会被修改,否则需要使用df =df.fillna(...)2) index比如将第一列设为index:df.set_index([0], inplace=True...原创 2018-10-10 19:03:29 · 578 阅读 · 0 评论 -
glibc内存分配释放示例
glibc内存分配释放示例原创 2018-09-28 11:26:07 · 1736 阅读 · 0 评论 -
进程分配内存的两种方式--brk() 和mmap()
内存分配转载 2018-06-06 11:03:04 · 973 阅读 · 0 评论 -
C/C++ main函数正确写法
C/C++ main函数正确写法原创 2015-12-10 16:58:05 · 4483 阅读 · 0 评论 -
C/C++混合编译 - C调用C++
C/C++混合编译,C调用C++转载 2014-10-31 09:47:57 · 1627 阅读 · 0 评论 -
sizeof void或者函数
sizeof void or function原创 2013-05-30 14:13:30 · 3755 阅读 · 0 评论 -
C语言整型提升 integer promotion
整型提升是C语言中的一项规定原创 2015-07-28 19:45:18 · 1570 阅读 · 0 评论 -
C语言函数指针与NULL
C语言中,函数指针和普通指针类似,如果定义了一个函数指针,比如int (*fun)(int a,int b); 那么函数指针fun将默认初始化为NULL。注意:1)函数指针不是函数声明,不要混淆。2)C中函数名可以隐式转换为函数指针,但是C++中非静态成员函数无法隐式转换, 因此在C/C++中获取函数指针时最好统一用取地址符&:即函数指针 = &函数名。...原创 2019-10-20 13:46:21 · 2777 阅读 · 0 评论 -
linux内核数据结构 - 其他
linux内核数据结构 - 其他 待续原创 2020-07-06 10:14:34 · 177 阅读 · 0 评论 -
linux内核数据结构 - tree
linux内核数据结构 - tree 待续原创 2020-07-06 10:13:51 · 198 阅读 · 0 评论 -
linux内核数据结构 -map
linux内核数据结构 -map 待续原创 2020-07-06 10:13:20 · 558 阅读 · 0 评论 -
linux内核数据结构 - Queue
linux内核数据结构队列,待续原创 2020-07-06 10:10:59 · 208 阅读 · 0 评论 -
单元测试googletest gmock
一:Mock C code对于c code,gcc 提供了编译链接选项:-Wl,-wrap比如gcc编译时加入链接选项 -Wl,--wrap,malloc,那么函数调用malloc的时候会调用自定义的__wrap_malloc,而原来的malloc会以__real_malloc进行调用。所以程序需要定义一个__wrap_malloc,比如:void* __wrap_malloc(siz...原创 2019-10-24 19:59:05 · 4360 阅读 · 0 评论 -
gdb 常用命令
run/r 运行运行带参数的可执行文件:r 后面接参数,例如:$ gdb executablefile(gdb) r arg1 arg2 arg3continue/c 继续运行next/n 单步运行step/s 如果有函数则进入函数执行finish 跳出当前的函数jump/j 跳转到指定行/地址后继续执行,因此如果在跳转的目标行上如果没有设置断点,会继续往下执行...原创 2018-04-20 17:21:49 · 8601 阅读 · 1 评论 -
C语言标准预定义的宏
C语言标准指定了一些预定义宏, 常用的如下:__DATE__ 进行预处理的日期,表示为Mmm dd yyyy 形式的字符串常量__FILE__ 代表当前源代码文件名的字符串 __LINE__ 代表当前源代码文件中行号的整数常量 __STDC__ 设置为1时,表示该实现遵循C标准 __STDC_HOSTED__ 为本机环境设置为,否则设为0原创 2017-11-02 13:41:19 · 1476 阅读 · 0 评论 -
gdb远程调试release版本
对于线上release版本,由于已经剔除了debug信息,因此无法通过加载符号表来debug程序,但是如果保留了release版本对应的debug版本,那么可以通过debug版本对release版本进行调试。以下假设release.exe是不带调试信息的release版本可执行文件,debug.exe是带调试信息的debug版本可执行文件。如果不是很确定是否包含调试信息,可以通过r原创 2017-06-07 20:14:39 · 1275 阅读 · 0 评论 -
C和C++混合编译 - C++调用C
转自:http://blog.csdn.net/david_xtd/article/details/7448313通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:[plain] view plain copy print?#ifdef__cplusplusextern"C"{#endif/****转载 2017-05-27 12:54:38 · 847 阅读 · 0 评论 -
C内存模型-BSS段、数据段、代码段、堆与栈
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用转载 2016-11-29 15:37:04 · 687 阅读 · 0 评论 -
结构体的内存分配机制
1. 打开UltraISO,“文件”->"打开",打开CentOS的ISO镜像。2.选择"启动光盘"->"写入硬盘镜像",将ISO写入U盘,写入方式选择USB-HDD+或者USB-ZIP+,建议USB-ZIP+,兼容性好。What type of media contains the packages to be installed?选择"Hard drive",4. "Sel转载 2016-09-09 13:37:42 · 670 阅读 · 0 评论 -
ubuntu下codeblocks设置
默认安装的codeblocks是不允许设置快捷键的,必须安装codeblocks-contrib安装方式:sudo apt-get install codeblocks-contrib安装后可以在codeblocks的Settings -> Editor -> Keyboard shortcuts中设置快捷键原创 2014-11-27 16:03:06 · 1695 阅读 · 0 评论 -
C 结构体位域 bit field (小端)
运行环境为X86 64小端:结构体中size最大的元素t0是int, 占四个字节,因此整个结构体是4字节对齐,结构体中的short是两字节对齐。原创 2012-09-16 14:16:11 · 1188 阅读 · 0 评论 -
Doxygen 生成UML类图
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统。原创 2023-08-16 13:08:59 · 909 阅读 · 0 评论 -
C++与Java在线程安全的懒汉式单例模式上的差异
对于java而言,可以通过内部类实现单例的延迟加载:public class Singleton { private Singleton() {}; private static class SingletonHolder { private static Singleton instance = new Singleton(); } ...原创 2018-03-09 14:04:30 · 231 阅读 · 0 评论 -
C++ 传值,传引用,传指针区别之汇编解析
C++ 传值,传引用,传指针区别之汇编解析原创 2019-02-28 17:20:56 · 1298 阅读 · 0 评论 -
char*, char[], 字符串初始化之内存布局
先上一段C代码:#include <stdio.h>int a_test = 66;char glob_str_array[] = "Global Heglo String Array!";char *glob_str_pointer = "Global Hegxlo String Pointer!";main(){ a_test = 88; co...原创 2019-02-27 15:32:07 · 3908 阅读 · 0 评论 -
C内嵌AT&T汇编 - X86
原文:https://blog.csdn.net/littlehedgehog/article/details/2259665https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html内核代码绝大部分使用C 语言编写,只有一小部分使用汇编语言编写,例如与特定体系结构相关的代码和对性能影响很大的代码。GCC提供了内嵌汇...转载 2019-01-16 10:37:03 · 959 阅读 · 0 评论 -
linux signal回调函数
void my_signal_handler(int sig){ printf("Received signal %d, quiting\n", sig); exit(1);}// set up signal handlersignal(SIGINT, my_signal_handler);signal(SIGQUIT, my_signal_handler);...原创 2019-01-10 17:13:27 · 1503 阅读 · 0 评论 -
C++构造函数嵌套调用问题
先看一个错误的C++例子:struct MY_CLASS{ int a; int b; MY_CLASS(int _a, int_b) { this->a = a; this->b = b; } MY_CLASS() { MY_CLASS(0, 0); ...原创 2018-10-13 12:19:45 · 3330 阅读 · 0 评论 -
C语言的字节对齐及#pragma pack的使用
原文:https://www.cnblogs.com/dabiao/archive/2010/04/15/1712458.htmlC编译器的缺省字节对齐方式(自然对界)在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一...转载 2018-04-16 11:01:45 · 1494 阅读 · 0 评论 -
C++的重载(overload)与重写(override)
转自:https://www.cnblogs.com/luxiaoxun/archive/2012/08/09/2630751.htmlC++的重载(overload)与重写(override)成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。重写是指派生类函数重写基类函数,是C++的多态的表现,特征是:(1)不同的范围...转载 2018-04-10 16:23:42 · 245 阅读 · 0 评论 -
关于在C++头文件中定义成员函数
对于Java来说,class文件中包含了成员函数的定义,但是,对于C++来说,一般将成员函数的声明放在头文件,而将其实现放在.cpp里面,那么在头文件中写成员函数的具体实现是否可以呢?The C++ ISO standard says:"A function defined within a class definition is an inline function."But, this doe...原创 2018-03-09 15:28:29 · 5246 阅读 · 2 评论 -
Enum使用方法,为什么使用typedef enum--转载
本文转自http://www.cnblogs.com/JCSU/articles/1299051.html注:以下全部代码的执行环境为VC++ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON 1#define TUE 2#define WED 3#define THU转载 2012-01-16 22:10:29 · 2350 阅读 · 1 评论