不清楚NDK从哪个版本开始其实就已经自带libiconv这个转换库了,压根就不需要三方编译!具体使用方法:a.cppextern "C"{ #include <iconv.h>}android.mk:添加如下代码LOCAL_WHOLE_STATIC_LIBRARIES += android_supportinclude $(BUILD_ST
#include <iostream> #include "cJson/cJSON.h" using namespace std; void parse_json_node( cJSON * json,size_t * align_count ) {  
zlib流式解压
libzip编译需要zlib支持configure文件里有这么一句--with-zlib=PREFIX specify prefix for ZLIB library于是 在configure的时候添加 --with-zlib="$zlib库的绝对路径" 由于在下一步make的时候需要zlib的头文件和库文件,接下
List Of Key codes:a - z-> 29 - 54"0" - "9"-> 7 - 16BACK BUTTON - 4, MENU BUTTON - 82UP-19, DOWN-20, LEFT-21, RIGHT-22SELECT (MIDDLE) BUTTON - 23SPACE - 62, SHIFT - 59, ENTER - 66, BACKSPACE - 67
编译器编译参数里添加-lws2_32,且在code::blocks里添加了lib目录(其实根本不需要添加),不否认这个版本的TDM_GCC做得有些垃圾了,必须直接引用相对路径,或者绝对路径才能正确编译,我次奥!
异常被捕获后可以不作处理,程序从捕获位置继续执行。而断言是完全无法忽略的,程序在断言失败处立即终止。因此断言通常用于调试版本,用来发现程序中的逻辑错误。虽然异常也能起到这样的作用,但是不应该用异常代替断言:1) 如果发现了逻辑错误,必须修改程序,而不可能在程序中进行处理和恢复,所以不需要向外传送,没有必要使用异常。2) 使用断言的开销比异常小得多,而且断言可以从发布版中完全去除。异常用于处理正确程
#include <iostream> using namespace std; class Action { public: void Do(); }; void Action::Do() { cout<<"Do"<<endl; } template <class T> class A { public:
std::vector在c++11标准里提供一个名为data的方法,返回指针缓冲区的指针。但在这之前没有此方法,可以用其它方法来获取此指针。std::vector<T>::value_type * pData = &m_vec[0];
typedef struct { size_t cbSize; char data[0]; }UnkownSizeStruct;变长结构如上定义,在msvc编译器中可使用#pragma pack(1)来定义字节对齐方式,否则在编译器定义结构体时会保留很多空白区域,网络传输时当时不需要传输这些东西,相当浪费带宽资源。不定长结构体唯一的作用就是指明一个cbSize,说到底,
class Pool { public: Pool() { /* implementation details irrelevant */ }; virtual&nbs
template <typename T,int len> size_t arraylen(T (&arr)[len]) { return len; } int main() 
贴段小代码,有没有看出什么道纠结我很久的。。。 #include <iostream> #include <cstdio> using namespace std; class A { public: void&nb
实际上这个问题不光C++会遇到,其他所有语言的标准容器的实现及选择上都是要考虑的。做应用程序你可能觉得影响不大,但是写算法或者核心代码就要小心了。今天改进代码,顺便又来温习基础功课了。 还记得Herb Sutter那极有味道的《C++对话系列》么,在其中《产生真正的hash对象》这个故事里就讲了map的选择。顺便回顾一下,也讲一下我在实用中的理解。 选择map容
gdb调试器命令学习总结笔记 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。 和所有常用的调试工具一样,gdb提供了以下功能: # 监视程序中变量的值 # 在程序中设置断点 # 程序的单步执行 在使用gdb前,必须先载入可执行文件,因为要进行调试,文件
非递归遍历,参见代码 m_exts里应该写类似于"h;cpp;c;php"这样的 void wxWidgetsTestDialog::Onm_browseClick(wxCommandEvent& event) { wxDirDialog dirDlg(th
mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug 生成单独大文件,动态链接库,UNICODE支持,DEBUG|RLEASE
wxFileSystem的FindNext返回的本身就是Unix类型的路径,要转换为Windows下可用的,而且是wxWidgets可用的,需要这几步 filePath是FindNext生成的路径 wxFileName temp(filePath,wxPATH_UNIX); f
std::move是一个用于提示优化的函数,过去的c++98中,由于无法将作为右值的临时变量从左值当中区别出来,所以程序运行时有大量临时变量白白的创建后又立刻销毁,其中又尤其是返回字符串std::string的函数存在最大的浪费。 比如: 1 std::string fileContent = “oldContent”; 2 s = readFileCon
左值右值 左值(lvalue)和右值(rvalue)是编程中两个非常基本的概念,但是也非常容易让人误解,看了很多文章,自我感觉真正将这个问题讲的很透彻的文章还没有看见,所以自告奋勇来尝试一下。如果左值右值的概念不是非常清楚的话,它们迟早会像拦路虎一样跳出来,让你烦心不已,就像玩电脑游戏的时候每隔一段时间总有那么几个地雷考验你的耐性,如果一次把所有地雷扫尽就好了。:) 左值(lv
我通常都是用code::blocks写c++程序,也对c::b 相当熟悉了. 最近尝试用 eclipse cdt 配置三方库这里简单介绍下. 1.设置环境变量 window->preferences->c/c++->build->environment 头文件,库文件,执行文件(包括dll文件)路径.... 2.静态库 这个其实已经在第一设置好库
使用mingw 对libcURL,openSSL,zLib交叉编译 将三个库解压到同一目录下 比如取目录名为 "source" 的目录 提前安装active-perl 配置好mingw和msys环境 否则编译会出错 - source + curl-xxx + openssl-1.0.xx + zl
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号