C++
文章平均质量分 84
天已青色等烟雨来
nozuonodie
展开
-
StdString.h
// =============================================================================// FILE: StdString.h// AUTHOR: Joe O'Leary (with outside help noted in comments)//// If you find any bugs in thi...转载 2018-10-22 16:12:59 · 2224 阅读 · 0 评论 -
const类型类成员的初始化
const修饰类的成员变量的初始化只能在类的构造函数的初始化表中进行下面是例子:#include "stdafx.h"#include class CConstPtrInit{public: CConstPtrInit():pTel(new int) { *pTel=200; } ~CConstPtrInit()原创 2016-04-18 14:37:57 · 2588 阅读 · 0 评论 -
在VS 编译sqlite3导出dll
创建一个空的win32 dll项目,把sqlite3.c和sqlite3.h加进来,然后设置几个配置 如下:编译后看到dll和lib已经生成,dll中也可以看到导出函数原创 2016-04-22 10:15:32 · 2077 阅读 · 0 评论 -
__super
The __super keyword allows you to explicitly state that you are calling a base-class implementation for a function that you are overriding. All accessible base-class methods are considered during the原创 2015-06-05 15:36:27 · 1113 阅读 · 0 评论 -
VS2015使用NASM编译汇编文件
@1:下载nasm后安装,在环境变量path中添加其安装目录,下载地址http://www.nasm.us/将下载的三个文件放到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations文件夹下,ok@2:下面就说下怎么在vs工程中使用:工程目录右击->"工程依赖项"->"生成自定义",然原创 2016-04-27 14:31:42 · 10965 阅读 · 0 评论 -
c++ 逗号操作符重载
Overload Operator Comma首先看看think in c++ 给出的一个重载的例子#include using namespace std;class After {public: const After& operator,(const After&) const { cout << "After::operator,()" << endl;原创 2016-04-05 12:32:10 · 2673 阅读 · 0 评论 -
c++ 类型int、long、double、char等的表示范围(最大最小值)
下面是一段测试代码#include #include #include using namespace std; int main() { cout << "type: \t\t" << "************size**************"<< endl; cout << "bool: \t\t" << "所占字节数:" << s转载 2016-03-24 11:48:21 · 2561 阅读 · 0 评论 -
C++11 override 和 final
class A1 final { };class B1 : A1 { }; // “B1”: 无法从“A1”继承,因为它已被声明为“final”class A1{ virtual void func() final {} };class B1 : A1{ virtual void func() {} //“A1::func”: 声明为“final”的函数无法被“B1::原创 2016-03-18 17:08:26 · 7494 阅读 · 0 评论 -
QT中qmlRegisterType qmlRegisterSingletonType的区别
qmlRegisterType qmlRegisterSingletonType了解设计模式的肯定知道单根模式,这个qmlRegisterSingletonType函数意思能就是注册一个单根类型到QML中,看看他们的完整声明:int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMino原创 2016-03-14 19:10:46 · 7936 阅读 · 0 评论 -
海量不重复数据的生成
前几天看到了一个项目需求,自己尝试写了下3亿行数据大概需要20分钟的时间,普通硬盘应该要慢些,内存映射或者内存盘应该会更快一点,懒得验证了,放出代码供学习下,算法是以前偶然看到得很巧的的算法,二次获取随机数是为了数据更随机(待验证,我觉得不需要)#include "stdafx.h"#include #include #include #include #include原创 2016-03-28 16:49:22 · 1418 阅读 · 1 评论 -
DuiLib禁用双击标题栏窗口最大化
要禁用窗口最大化只要屏蔽掉非客户区的双击消息就可以了 主要代码如下://屏蔽双击放大 if (WM_NCLBUTTONDBLCLK == uMsg) { return 0; } return WindowImplBase::HandleMessage(uMsg, wParam, lParam);要截取到这个消息必须override WindowImplBase原创 2016-06-06 13:02:05 · 4846 阅读 · 1 评论 -
Can't load IA 32-bit .dll on a AMD 64-bit platform
Can’t load IA 32-bit .dll on a AMD 64-bit platform 发生这个错误的原因是jdk的版本不对(x86和64),配置JAVA_HOME环境变量到相应的jdk版本的安装路径就ok了原创 2016-08-04 13:30:26 · 718 阅读 · 0 评论 -
C++中一个class类对象占用多少内字节
一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分?一个Class对象需要占用多大的内存空间。最权威的结论是: *非静态成员变量总合。 *加上编译器为了CPU计算,作出的数据对齐处理。 *加上为了支持虚函数,产生的额外负担。 介绍完了理论知识后,再看看再找一个例子看看(注:一下所有结果都是在VC6.0 开发环境中得出的结论) ...转载 2018-03-27 10:56:03 · 3780 阅读 · 2 评论 -
Valgrind不是泄漏检查工具
概要:在我的社区中,Valgrind 是我已知的被误解最深的工具。Valgrind 不仅仅是一个内存泄露检查器。它只是包含了一个检查内存泄露的工具而已。但我想说的是这个工具恰恰是 Valgrind 中用处最小的一个组件。无需改变 Valgrind 的调用方式,你就能得到比大多数人想象的要多得多的极具价值的信息。 Valgrind 会在你的程序奔溃之前找出潜在的错误;它不仅告诉你错误在哪里,...转载 2018-04-01 14:01:46 · 1039 阅读 · 0 评论 -
64位的GCC 编译32位程序
64位的GCC 编译32位程序编译32的程序,只需要加上-m32就可以了gcc -m32 llong.c但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/5/libgcc.a 时跳过不兼容的 -lgcc/usr/bin/ld: 找不到 -lgcc/usr/bin/ld: 当搜索用于 /usr/lib/g原创 2018-01-14 13:12:56 · 40603 阅读 · 7 评论 -
GCC 编译 -std简述
用GCC编译代码时候后面带有-std=c++1z 的选项,这是指定c/c++的标准.具体的标准如下,详细信息可以看引用里面的详细说明c stand descript -std=c90 or -std=iso9899:1990 称为C89或C90 -std=iso9899:199409 称为C94或C95 -std=c99 or -std=iso9899:1999. 19原创 2017-06-14 14:00:38 · 11439 阅读 · 0 评论 -
RegisterWindowMessage
RegisterWindowMessage RegisterWindowMessage函数定义一个新的窗口消息,保证该消息在系统范围内是唯一的。通常调用SendMessage或者PostMessage函数时,可以使用该函数返回的消息值。Return valueIf the message is successfully registered, the return value is a mes翻译 2016-06-13 09:44:50 · 1926 阅读 · 2 评论 -
Inno Setup 打包的文件以管理员权限运行
近期发现一个问题,就是Inno Setup打包的程序安装完成后运行需求管理员权限的程序的时候会失败,解决这个问题的最简单办法就是打包的后的程序也以管理员权限运行。右键以管理员身份运行太麻烦,还经常忘记。所以改成双击就可以的。windows程序的清单文件就可以实现这个,下面是vs2012编译器生成程序的UAC选项。因此生成后的程序清单包含这一项目就可以了下面开始开原创 2015-12-23 14:48:33 · 24112 阅读 · 0 评论 -
C/C++ 开源库及示例代码
C/C++ 开源库及示例代码= == 说明 =本页面汇总俺收集的各种 C 和 C++ 的开源代码库,不定期更新。如果你发现本页面的开源库有错漏之处,非常欢迎给俺提供反馈——有 GitHub 帐号的同学,可以给俺发 issue;没帐号的同学,可以去俺博客留言。= 1 综合性的库 =BoostHome:http://boost.org/Wikipedia:英文、中文Boost 大概是最重要的第三方 C+转载 2016-11-16 16:15:34 · 14800 阅读 · 0 评论 -
explicit in c++
在很多库中可以看到这个c++的关键字,主要作用是修饰构造函数,不允许隐式转换,避免难以觉察的错误下面是cppreference中的例子struct A{ A ( int ) {} operator int() const { return 0; }};struct B{ explicit B(int) {} explicit operator int() cons原创 2016-11-10 13:50:35 · 557 阅读 · 0 评论 -
JNI Java调用C++
在windows环境下使用Java调用c++的实现vs新建一个NativaInvoke的dll工程,拷贝jdk目录下(C:\Program Files\Java\jdk1.8.0_66\include)的jni.h jni_md.h jawt_md.h 到工程代码目录新建一个Java类代码如下:public class NativaInvoke{ //声明调用c++的实现方法,方法原创 2016-08-04 14:15:54 · 672 阅读 · 0 评论 -
c/c++产生随机数
c库伪随机数发生器rand srand大多时候用时间产生随机发生器的seedsrand((unsigned)time(NULL)); //生成种子srand(seed);c++11 引入的伪随机数发生器常用的就是线性均匀分布uniform_int_distribution uniform_real_distribution原创 2016-03-16 22:40:37 · 3958 阅读 · 1 评论 -
c++结构体字节对齐
vs不是支持所有的对齐方式, 像#pragma pack(7)这样的预处理是无效的,编译器会提示这样的警告"warning C4086: 杂注参数应为“1”、“2”、“4”、“8”或者“16”"原创 2015-09-10 16:46:07 · 574 阅读 · 0 评论 -
解决set_unexpected不起作用的问题
编译环境:vs2012按照Think in c++中写了一段代码#include "stdafx.h"#include #include using namespace std;class up {};class fit {};void g();void f(int i) throw (up,fit){ switch (i){ case 1:原创 2014-04-02 12:40:48 · 3920 阅读 · 5 评论 -
c++中new容易出现的问题
在c代码中经常会见到这样的代码 char * str=(char *)malloc(100*sizeof(char)); if (str==NULL) { //错误处理 }出于习惯的问题,在C++中也中也这么写m_pToolBarDlg=new CDYToolBarDlg(); if (m_pToolBarDlg==NULL) { StringCchPr原创 2014-03-31 11:09:53 · 3582 阅读 · 0 评论 -
C++ 重载 覆盖 隐藏 重写 重定义
1:重载(overload):在同一个类中,函数名相同,参数不同2:覆盖(overlaod):派生类和基类直接,函数名相同,参数相同,基函数必须有virtual关键字。在Think In C++一书中说可以称之为重写(override)。其实就是虚函数3:隐藏(Think In C++一书称重定义(redefining)):3.1:派生类和基类函数同名,但是参数不同,不论有无virtu原创 2014-02-27 09:57:50 · 1246 阅读 · 0 评论 -
无法定位程序输入点FlsGetValue于动态链接库KERNEL32.dll
vs2012编译的程序在XP下运行时候出现了这个错误,刚开始以为是程序没有按xp方式编译,后来发现是C 运行时库太老,替换的新的库就OK了。下载地址:http://download.csdn.net/detail/x356982611/5997135原创 2013-08-23 10:19:44 · 41076 阅读 · 24 评论 -
VS :对象被多次指定;已忽略多余的指定
今天新建了一个工程,老是提示:“对象被多次指定”和“在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?”,以为是头文件包含的问题,捣鼓半天不行。后来想到新建文件的时候本来要建一个头文件结果不小心建成了cpp文件,就在解决方案资源管理器中直接改了后缀,看来有可能是这个问题。最后删除了那个文件重新新建了一个头文件问题解决了。查看.vcxproj原创 2014-02-20 13:51:55 · 6970 阅读 · 4 评论 -
C++ General: How is floating point representated?
文章出处:Q: What is IEEE 754 standard?A: IEEE Standard 754 floating point is the most common representation today for real numbers on computers, including Intel-based PC's, Macintoshes, an转载 2014-02-25 17:26:06 · 1201 阅读 · 0 评论 -
编译时出现error C4996 解决方法
1:使用安全的函数替换老的函数2:屏蔽警告信息1.#param warning(disable:4996)2.在预编译头文件stdafx.h里定义下面的宏(include其他头文件的最前面): #define _CRT_SECURE_NO_DEPRECATE或#define_CRT_SECURE_NO_WARNINGS3.更改预处理定义: 项目->属性->配置属性-原创 2013-11-04 10:14:25 · 42302 阅读 · 1 评论 -
const修饰成员函数
class CTest{public: void cFunc() const; //不可改变对象的成员变量 void Func();};void CTest::cFunc() const{}void CTest::Func(){}const CTest ctest;const CTest * pctest=new CTest;ctest.cFunc();原创 2013-09-11 11:48:00 · 1329 阅读 · 0 评论 -
explicit关键字
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n ); //本意是预先分配n个字节给字符串String ( const char* p ); // 用C风格的字符串p作为初始化值//…}转载 2013-09-06 17:28:29 · 1206 阅读 · 0 评论 -
C++数组初始化的问题
有时候为了省事觉得这样就可以初始化一个数组int main(int argc,char ** argv){ int arrays[11]={10}; }原创 2014-04-28 13:44:36 · 2350 阅读 · 0 评论 -
C++开发者都应该使用的10个C++11特性
C++开发者都应该使用的10个C++11特性在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。auto在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类转载 2014-09-20 23:06:56 · 1089 阅读 · 0 评论 -
SecureZeroMemory和ZeroMemory的区别
ZeroMerory调用操作可能被编译器优化掉,导致保存敏感信息的堆栈不能被清空而被恶意软件利用或dump到原创 2015-09-07 11:14:15 · 2708 阅读 · 0 评论 -
找不到lua_open
使用lua5.2发现编译器找不到lua_open函数,最后发现这个函数在5.2中已经被遗弃,被新的函数luaL_newstate和lua_newstate替代。lua_newstate可自定义内存分配函数,luaL_newstate使用默认的内存分配方式。原创 2015-08-10 21:29:55 · 7342 阅读 · 0 评论 -
使用Intel编译器SSA
1) 内存相关(初始化、NULL指针引用、内存分配和释放、内存重复释放(double free),内存泄漏、非法内存访问、缓冲区溢出等)1. 读取没有初始化的变量,Uninitialized read,举例:#include int main() { int a; printf("%d\n",a); }原创 2015-01-05 09:07:03 · 1591 阅读 · 0 评论 -
无法解析的外部符号 _AtlTraceVU,无法解析的外部符号 ATL::CTrace ATL::CTrace::s_trace
无法解析的外部符号 _AtlTraceVU,该符号在函数 "public: void __cdecl ATL::CTrace::TraceV(char const *,int,unsigned long,unsigned int,wchar_t const *,char *)const " (?TraceV@CTrace@ATL@@QBAXPBDHKIPB_WPAD@Z) 中被引用原创 2014-11-05 09:27:17 · 4193 阅读 · 0 评论 -
UNICODE(UTF-16)与UTF-8编码的相互转换
我们通常所说的UNICODE其实是UTF-16,下面这几个函数实现UNICODE(UTF-16)与UTF-8编码的相互转换。[cpp] view plaincopy/** * This file implement functions of: * * 1. UTF-16 character to UTF-8 chaaract转载 2014-10-14 22:42:30 · 2149 阅读 · 0 评论 -
HEAP CORRUPTION DETECTED
出现这个问题大多是因为写入的内容超出了预分配的空间,注意检查越界的情况原创 2014-11-14 16:46:31 · 1378 阅读 · 0 评论