C/C++编程
文章平均质量分 62
DLite
这个作者很懒,什么都没留下…
展开
-
注意size_t的陷阱
在C++中,size_t通常北定义为unsigned long,常被建议用来表示容器的容量或位置。但是要注意,在很多情况下,表示容量或位置,也往往需要有符号整数,不应该用size_t。原创 2024-02-06 21:23:00 · 462 阅读 · 0 评论 -
C++中用Boost::Python调用Python模块
在C++中用Boost::Python调用Python模块,过程及避坑指南。原创 2024-02-05 18:00:16 · 1733 阅读 · 0 评论 -
LLVM IR和C/C++函数相互调用时的注意事项
一、从C/C++调用LLVM IR函数主要有两种办法。1、通过llvm::ExecutionEngine::runFunction()调用。 存在的问题:可以直接调用llvm::Function,但目前参数传递没有实现,只提供了接口。2、通过llvm::ExecutionEngine::getPointerToFunction()即时编译为本机代码,并获得一个指向C函数的vo原创 2015-03-07 19:25:45 · 4716 阅读 · 1 评论 -
用Visual Studio实现一个最小的LLVM JIT程序
因项目需要,最近两天刚开始看LLVM,写了一个简单的小例子让LLVM用在VC++项目中。下面是具体步骤。一、安装配置LLVM下载并用VS编译安装LLVM,可以参考:http://llvm.org/docs/GettingStartedVS.html二、创建和配置我们的项目1. 用VS新建一个空的C++项目,添加一个main.cpp文件,用于写下面的代原创 2014-01-11 17:14:54 · 7418 阅读 · 0 评论 -
由std::string继承引起的LNK 2005错误
小心由std::string继承引起的LNK 2005错误原创 2013-12-12 17:20:03 · 5720 阅读 · 1 评论 -
让std::shared_ptr变成动态类型指针
作者:dlite@163.com c++11中引入的shared_ptr可以封装了线程安全共享指针技术,给开发人员带来了很大方便。然而,美中不足的是,shared_ptr是基于模板的,其声明如下: template class shared_ptr; 而且,并不存在”shared_ptr“这样的通用类型。因此,原则上,每种shared_原创 2012-09-23 22:15:52 · 10025 阅读 · 0 评论 -
C++11中的auto陷阱
作者:dlite@163.com C++11中引入的auto关键字自动推导类型特性,可能是最方便也最容易理解的特性了。然而,即使是这个简单特性,也有陷阱,需要我们使用时注意。 1、引用类型被推导为非引用类型 例如:foo(void* arg) { if (arg) { auto big = *static_cast(arg); ... }原创 2012-06-13 10:04:01 · 4562 阅读 · 2 评论 -
解决ACE_Proactor中psudo_task不能正常结束的问题
ACE_Proactor的psudo_task是一个单独的后台线程,目的是为模拟某些系统不支持的异步操作,比如Win2000中的Connect()调用。然而,由于ACE的程序不完善,在调用ACE_Proactor::end_proactor_event_loop() 后,无法结束psudo_task线程。通常的解决办法是删除proactor实例。更多关于这个问题的讨论可以参见:http:/原创 2012-06-03 10:19:15 · 1344 阅读 · 0 评论 -
C++命名空间中操作符函数的动态链接问题
在共享库中导出有命名空间的c++操作符函数时,其实现文件中最好显式指定函数的命名空间,而不要用“using namespace xxx”的形式。否则,可能导致共享库中的实现和声明不匹配,外部程序链接失败。原创 2011-03-22 21:53:00 · 3208 阅读 · 0 评论 -
[转]关于C语言中的结构体对齐
对结构体内存对齐规则和长度规则做了具体的总结,而且描述了具体的伪算法。转载 2011-02-12 21:05:00 · 1287 阅读 · 0 评论 -
关于网络编程中字节序转换优化的思考
网络编程时,传统的字节序转换过程不一定是最合适的。原创 2011-02-16 10:30:00 · 2167 阅读 · 0 评论 -
预编译头文件:效率还是内聚性?
使用C/C++预编译头文件的优缺点,以及改进建议。原创 2010-11-18 12:41:00 · 1434 阅读 · 0 评论 -
对于Linux平台下C语言开发中__sync_函数的认识(转)
gcc 对原子操作的扩展转载 2010-10-19 20:38:00 · 16480 阅读 · 0 评论 -
解决CentOS 5.5下编译gcc 4.5.1问题
记录解决CentOS上编译gcc的一些问题的过程。原创 2010-09-02 11:52:00 · 2276 阅读 · 0 评论 -
linux下用ACE获取主机名一个Bug
表面是ACE函数ACE_INET_Addr::get_host_name的Bug,更可能是glibc2中gethostbyaddr_r函数实现的Bug。原创 2010-09-12 23:19:00 · 1984 阅读 · 0 评论 -
缓存管理的基本问题
所谓缓存,本质上是同一块数据在不同空间的存储。这样的例子很多:※ CPU和内存之间的高速缓存;※ 同时映射到两个进程地址空间的数据,典型的是共享内存;※ 同时位于数据库和内存中的同一个业务数据,如O-R映射;※ 位于两台服务器的数据,典型的例子是集群全局配置信息。一、访问缓存可能发生的简单问题: 1、在同一个存储空间中,不同进程/线程间的共享数据一致原创 2009-07-22 22:24:00 · 1199 阅读 · 0 评论 -
关于线程池实现思考——分离任务队列与线程池
设计线程池时,本质上所使用的逻辑模型仍然是我们熟悉的“生产者/消费者”模型。 外部线程负责产生需要执行的任务,线程池线程负责执行这些任务。任务放在一个共享的数据结构中,通常是一个线程安全的队列。 生产 消费 外部线程(生产者)--->任务 通常,任务对象会提供一个run原创 2009-04-28 14:52:00 · 3920 阅读 · 0 评论 -
C语言常用宏定义
C语言常用宏定义01: 防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif02: 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigned char boolean; /* Boolean value type. */typedef u转载 2008-07-29 17:21:00 · 1161 阅读 · 0 评论