随笔分类 - C/C++
关于C和C++的一些编程技术
摘要:本文介绍在没有国产主机情况下,进行软件开发的两种替代方法:交叉编译和QEMU虚拟机。
阅读全文
摘要:这篇文章也是《使用错误代码对象进行C++错误处理》中提到的文章,不过干货不多,特别后半段写得不够清楚,或者我水平有限,硬着头皮翻译完了。以后除非遇到比较好的文章,否则还是不翻译了。
阅读全文
摘要:函数返回值通常用于表函数是否在没有错误的情况下执行。但是,很难确保调用者适当地使用返回值。你很有可能听到过这样说:“我相信你,你不会犯这样的错误。”我在这里提出的想法,是受到几周前我们在项目中出现的一个错误的启发。它只出现在一个生产环境中,花了几天的时间才发现,它来自于一个特定环境的初始化例程的失败。实际上,调用此例程的代码没有测试其返回代码。
阅读全文
摘要:我已经使用了本文描述的代码和机制近20年了,到目前为止,我还没有找到更好的方法来处理大型C++项目中的错误。最初的想法是从一篇文章(Dr Dobbs Journal 2000年)中摘录出来的。我已经添加了一些新内容进去,使它更容易在生产环境中使用。写这篇文章的冲动是最近发表在Andrzej的C++博客。正如我们在本文后面将看到的那样,使用错误代码对象可以产生更清晰、更易于维护的代码。
阅读全文
摘要:最近因项目需要,需要把一定数量的中等文件从开发板上传到电脑上,分别选择了FTP和TCP自定义协议两种方式进行传输,进行了简单的对比测试,故做如下记录。
阅读全文
摘要:最近想系统学习并使用一下boost的asio异步网络库,所以需要编译boost库使用,下面简单介绍如何编译。
阅读全文
摘要:C++11中引入了一个用于多线程操作的thread类,简单演示如何使用,以及如果进行多线程同步。
阅读全文
摘要:最近研发的产品出了点小bug,最后查到根本原因是,其中一个进程A使用基于FIFO的实时进程优先级,而另一个进程B是使用普通调度的进程优先级,而A和B两个进程是互相通信的,进程B会被饿死,而进程A也不能正常工作。分析问题过程中查找了一些资料,以下记录一些特别注意的点。
阅读全文
摘要:在进行web开发时,使用传统的CGI方式,在C/C++程序里面既要处理逻辑,也要处理页面显示内容,会比较混乱。可以通过模板引擎,使得逻辑与显示的分离。Google CTemplate就是其中一个开源的C++模板引擎。使用ctemplate不仅可以产生html,还可以生成xml,json等格式的内容。
阅读全文
摘要:前言 在阅读此文章前,建议先阅读我之前写的《libctemplate——C语言模块引擎简介及使用》,以便对这个库有一个初步的认识。通过对库的代码阅读,对库有了一定的认识,提练一些重要的知识点,以作记录。 原理 1、通过一系列接口函数建立字典树,属于MVC中的C,即controllor部分;接口在头文
阅读全文
摘要:1、准备交叉编译环境 环境说明:Windows 7 64位 此过程需要: (1)Qt库开源代码,我使用的是5.7.0版本; (2)Perl语言环境5.12版本以上; (3)Python语言环境 2.7 版本以上; (4)Windows平台上的MinGW开发工具集(内含本地编译器gcc、g++ 4.9
阅读全文
摘要:关于单元测试的重要性、gtest的优缺点等就不说了。之前项目是没有做单元测试的,在VS的解决方案中,只有一个可执行的工程,其他的工程都是以DLL库的形式提供。本文只针对使用VS对DLL库进行单元测试,做一些记录。
阅读全文
摘要:html5支持使用websocket协议与服务器保持一个长连接,方便双方互相传输数据,而且服务器也能主动发送信息给客户端,而在这之前使用HTTP是很难做到的。下面介绍使用C++实现的websocket++的简单使用。
阅读全文
摘要:首先声明此libctemplate不是Google那个ctemplate。这个库是用C语言实现的,只有一个实现文件和一个头文件。Gooogl的ctemplate是C++实现的,和线程还扯上了关系。这两个库的具体代码还没看,从介绍及例子上看,libctemplate应该比Google的那个更轻量级,在嵌入式的web开发中可能更适合。
阅读全文
摘要:最近在做项目中发现一个Bug,直接把进程搞死,查了一下,居然是一个最不起眼的地方导致的,在此记录一下。先看下面代码#include #include using namespace std;int main(){ char aa[1024] = {0}; float f = 50.123...
阅读全文
摘要:定义在main之前调用的函数!有了这个特性可以改善c的模块化设计。
阅读全文
摘要:gcc 直接编译cpp文件会报错:undefined reference to '__gxx_personality_v0' ,这时使用g++编译即可,也可使用gcc编译,但是需加编译选项-lstdc++ 例: gcc -lstdc++ -o test test.cpp对于具有像如下代码的c和cpp...
阅读全文