随笔分类 - c/c++/go/rust
摘要:2022年jetbrains做的c/c++生态开发者调研,参见这里。总体来说,绝大部分用户应该可以考虑升级到c11/c++14或c++17,毕竟是modern c/c++。对应的gcc应该为8.x,linux内核应该到4.x(最好是4.18,支持roce soft,因为rhel 8自带版本,同时rh
阅读全文
摘要:注:linux下除了gcc和clang外,其他常用的编译器还包括intel c++编译器,ibm xlc编译器,sunpro编译器。 完整的gcc详解可以参见https://www.cnblogs.com/zhjh256/p/15596130.html。 “-Wall”选项打开所有最常用到的编译警告
阅读全文
摘要:因为项目原因,需要使用到rabbitmq的c客户端库。首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cache),否则原来的cmake缓存都在了,将仍然会出现原来的错误。 依次点击configire、gene
阅读全文
摘要:昨晚,在编译rabbitmq-c时,使用cmake生成vs项目文件时遇到下列错误: CMake Error at C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:148 (messa
阅读全文
摘要:不同于在java中,虽然在java中,有些第三方库只是做了桥接的功能,比如slf4j-log4j-api,但是在运行时他们仍然是需要的,所以最多只能说是松耦合做得很好。 但是在c++中,一般我们应用第三方库的时候,是头文件+库(lib/a或so/dll)配对的形式(常用必备的c/c++三方库 htt
阅读全文
摘要:晚上花几分钟在windows下测了下pthread的用法,出现错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 经网上搜,反正都没解决,其中一个说引入#pragma comment(lib, "pthreadV
阅读全文
摘要:初学cpp,因为之前装linux下各种软件的时候,知道LD_LIBRARY_PATH可以指定动态库的目录。今天在vc集成log4cpp的时候,编译main时报error LNK2019: 无法解析的外部符号,已经在 包含了目标dll的目录,经搜索帖子http://bbs.csdn.net/topic
阅读全文
摘要:晚上,在测试tinyxml的时候,发现其中声明了<?xml version="1.0" standalone="no" ?>,经查,其含义为standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表
阅读全文
摘要:如同linux下通常要求安装特定版本的libstdc++一样,windows下vc++生成的exe发布时的依赖dll问题,可以参见帖子,http://bbs.csdn.net/topics/391052257,这个帖子应该来说已经很清晰的说明了如何分发的问题。 需要注意的是生成的dll/lib是32
阅读全文
摘要:log4cpp,http://log4cpp.sourceforge.net/,跟log4j一样,不说最重要,绝对是最常用的。 zk 客户端,https://blog.csdn.net/yangzhen92/article/details/53248294 memcached,libmemcache
阅读全文
摘要:春节放假期间,一直在学习c++,越想越发现c++标准之于gcc/vc/boost等实现相当于jsr规范之于sunjdk/ibmjdk/tomcat/weblogic等实现
阅读全文
摘要:const_cast 用于去掉const属性,把const类型的指针变为非const类型的指针,如:const int *fun(int x,int y){} int *ptr=const_cast<int *>(fun(2.3)) dynamic_cast 该操作符用于运行时检查该转换是否类型安全
阅读全文
摘要:在java中,我们知道除了public和private,protected外,还有默认的包可见性访问级别,虽然如此,很多时候出于早期设计缺陷的原因,我们需要访问一些包或者protected可见性级别的方法,这个时候就比较麻烦了,要是选择和目标服务在相同包中,总看起来很奇怪,如果作为子类继承,则更加奇
阅读全文
摘要:久而久之,发现c/c++的typedef给类型自定义别名的语法糖就保证设计的一致性而言,确实是个相当不错的特性,跟oracle pl/sql的rowtype或type一样,可惜java、mysql均不支持。
阅读全文
摘要:或许是基于一直以来c/c++头文件声明和cXX实现物理上置于独立文件的考虑,c++中的OO在现实中基本上也是按照声明和实现分离的方式进行管理和编译,如下所示: Base.h Base.cpp 分发给客户的时候,我们只要提供Base.h和Base.cpp编译后的so或者a即可。如下: 相较于于java
阅读全文
摘要:c标准中包含了一个sleep用以实现当前线程暂停执行n毫秒,如下所示: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中需要带上头文件 include <Windows.h> //没有<unistd.h> Sle
阅读全文
摘要:默认情况下,如果没有明确声明某些函数比如赋值、拷贝函数,c++会自动生成这些函数,通常他们是对成员进行by-value拷贝。如下: 有些时候,赋值、拷贝对象并无什么意义或者不合理,比如对于socket或者thread而言,这种情况下,可以明确通过指定=delete告知编译器不要自动生成它们。如下所示
阅读全文
摘要:对于面向对象而言,多态是最有用的基本特性之一,相对于函数指针,易用得多。下面看下c++继承和多态行为的基本特性,最后说明下和java的基本差别。 首先定义父类和子类。 base.h base.cpp Derived.h Derived.cpp 基本使用: 输出如下: 从上面的代码和结果可以看出,c+
阅读全文
摘要:从c++ 11开始,语言核心和标准库开始引入了对多线程的原生支持。如下所示: int doSth(char c) { default_random_engine dre(c); uniform_int_distribution<int> id(10,10000); for(int i=0;i<10;
阅读全文
摘要:首先要来说一说字符集和编码的关系,这两者既有交叉、又有异同。https://www.runoob.com/w3cnote/charset-encoding.html、https://blog.csdn.net/weixin_44198965/article/details/93125017。简单可以
阅读全文