c/c++
文章平均质量分 64
Frank_Liuxing
金融IT工程师,擅长快速交易系统,资管系统,c++后台服务程序。
展开
-
写一个可执行的动态库
写一个C风格的入口函数,无参数、无返回值。入口函数只依赖系统调用,结尾调用exit退出程序。不要依赖其他动态库,哪怕是自己,即不依赖自己导出的函数。编译时,使用-e 指定入口函数。编译时使用-fPIC参数。原创 2024-03-07 10:49:17 · 900 阅读 · 0 评论 -
记一次c++ auto的坑
class A;A& find(){ A& a = ; //find a return a;}//调用的地方,虽然find返回引用,但是a的类型是A,会调用find的复制构造函数auto a = find();//如果要使用引用类型应该这样写:auto &a = find();结论:通过auto将变量申明成引用类型,一定要加引用符号。...原创 2022-04-08 21:47:08 · 924 阅读 · 0 评论 -
c++ 根据指针类型获取原类型
templatestruct get_type{ typedef T type;};//指针类型的偏特化 templatestruct get_type{ typedef T type;};//使用方法int main(){ get_type::type a; //a的类型为int}原创 2016-02-18 15:16:10 · 2364 阅读 · 0 评论 -
应用程序无法正常启动(0xc0000013),请单击确定关闭应用程序。
问题描述在windows7上面使用visual 2013编写的c++程序,在本机运行正常,copy到windows server2008 R2上,打开时抛出如上错误,如图: 其中:程序为32位,win7系统为64位,windows server 2008系统为64位。原因windows server 2008机器上没有安装visual c++运行库。解决办法从微软官网上下载visual c+原创 2017-01-03 18:04:28 · 11092 阅读 · 0 评论 -
Linux 输出流重定向缓冲设置
问题描述我写了一个Linux程序,程序很简单,源码如下:#include <stdio.h>#include <unistd.h>int main(){ for(int i = 0; i < 10;i++) printf("hello world\n"); sleep(1000000); return 0;}在终端上执行时,打印出期望的信息:原创 2017-01-04 12:36:51 · 13018 阅读 · 2 评论 -
c++中的64位整数
c99标准以前主流编译器不支持64位整数。c99标准c99将long long纳入标准中。long long类型的位数不低于64. Linux上GCC从4.5版本开始,完全支持c99标准,因此可以使用long long表示64位整数。 Windows VC6.0 不支持c99标准,但是windows为了支持64位整型,可以使用__int64来表示64位整数。c++11标准long long进入了原创 2017-01-04 18:08:53 · 5907 阅读 · 0 评论 -
cmake 设置vs工程的MT、MTd
cmake设置vs工程的多线程链接库MT、MTd原创 2017-06-30 17:26:28 · 17682 阅读 · 1 评论 -
cmake 为release版本创建pdb文件
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")原理:https://www.wintellect.com/correc原创 2017-08-29 12:59:44 · 5109 阅读 · 0 评论 -
c++ 宏的奇淫技巧
原文地址:http://www.cnblogs.com/youthlion/archive/2012/02/04/2338265.html众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有 一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换), 那么宏其实可以为我们在符号上产生新的代码转载 2017-10-13 09:13:32 · 1052 阅读 · 0 评论 -
Win32调试内存错误提示
Win32 Debug CRT Heap Internals… by Andrew Birkett (andy@nobugs.org)If you are lazy, skip the explanation and jump to the table at the bottom of the pageWhen you compile programs with DevStudio转载 2015-04-28 13:03:48 · 1082 阅读 · 0 评论 -
printf %g 的精度问题
MSDN说:g double Signed value printed in f or e format, whichever is more compact for the given value and precision. 当需要输出浮点数时,采用%g,它会根据浮点数的值来选定使用%f输出还是%e输出。发现如下现象:double d = 9999.01;printf("%原创 2015-03-10 16:51:09 · 2357 阅读 · 0 评论 -
c++ double类型的误差
将字符串转化为double类型存在误差,例如:字符串为1.89转化为double类型为:1.8899999999999.这是正常的。在c语言中头文件float.h中有如下定义:#define DBL_EPSILON 2.2204460492503131e-016 /*smallest such that 1.0+DBL_EPSILON != 1.0 */也就是说,只要使原创 2015-02-10 15:44:39 · 6694 阅读 · 0 评论 -
内存映射文件例子
内存映射文件 http://kymcuc.blog.163.com/blog/static/201942114201211542541308/1、利用段在同一程序的多个实例之间共享数据#includeusing namespace std;#pragma data_seg("shared")//自定义端,名字为sharevolatile long g_转载 2013-10-10 15:51:42 · 2390 阅读 · 0 评论 -
通过Hook将DLL注入进程
首先,读这篇文章之前,默认已经掌握了进程地址空间,dll加载,windows Hook技术。1. 为什么需要dll注入?如果一个进程的程序是我们自己编写的,我们可以在程序中隐式或者显式地加载需要的dll,不需要dll注入。但是,当一个进程的程序不是我们编写的,而我们又需要该程序加载指定的dll,以便进行某些操作,这是就需要dll注入。我们知道,dll可以被多个进程加载,当一个进程加载d原创 2013-10-18 10:16:44 · 6194 阅读 · 0 评论 -
关于文件中的0D、0A
文件一般分为文本文件和二进制文件。 在windows文本文件中,分行即‘\n“,表示为0x0D 0x0A。分为两种情况: 如果你想一个文本文件中写入一个'\n',文本文件中会增加0x0D 0x0A两个字节(可以使用utraledit来查看,记事本是看不出来的);如果你读一个文本文件,一旦遇到0x0D 0x0A,遍会读为一个'\n'(0x0A)。 而在windows的二进制文件原创 2013-12-04 15:35:32 · 5092 阅读 · 0 评论 -
c语言中的可变长参数
前言可变长参数指函数的参数个数在调用时才能确定的函数参数。基本上各种语言都支持可变长参数,在特定情形下,可变长参数使用起来非常方便。c语言中函数可变长参数使用“...”来表示,同时可变长参数只能位于固定参数的后面,固定参数的个数至少为1。只要学习过c语言的,应该都知道printf函数,并且见识到了其强大的功能——事实上,迄今为止,我仍认为这是c函数库中最牛逼的函数之一。一、一个简单的例子原创 2014-01-08 16:12:03 · 4018 阅读 · 0 评论 -
c++获取文件信息——_stat函数的使用
c++获取文件信息——_stat函数的使用_stat函数的功能_stat函数用来获取指定路径的文件或者文件夹的信息。函数声明int _stat( const char *path, struct _stat *buffer );参数:path——文件或者文件夹的路径buffer——获取的信息保存在内存中返回值:正确——返回0错误——原创 2014-01-21 15:31:18 · 49183 阅读 · 2 评论 -
c++ 访问sqlserver数据库,插入速度优化
1. 概述使用c++访问数据库的方法很多,由于我访问的是sqlserver数据库,于是上MSDN查了一下有哪些访问技术,主要有以下几种:ODBC OLEDBADOADO是OLEDB的封装,使用起来比OLEDB方便。由于ADO比OLEDB多了一层,其速度可能不及OLEDB,所以就不考虑ADO了。数据库获取方法参考MSDN:https://msdn.microsoft.c原创 2015-01-28 15:30:36 · 15447 阅读 · 7 评论 -
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)
环境:在非MFC程序(使用standard windows library)中,添加MFC支持,静态链接MFC库。 发生以下错误:uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT原创 2015-02-06 16:20:10 · 1266 阅读 · 0 评论 -
c++ 变长参数的作为参数
有时候不仅需要处理变长参数,还需要将变长参数作为参数,传递给其他函数。先上一段代码,定义一个函数:/*函数说明write_log, 向文件中写字符串*@param pf 文件指针*@param format 格式字符串(与printf格式相同)*@param ... 可变长参数*/void write_log(FILE* pf, const char* format, ...原创 2015-02-10 16:17:53 · 2572 阅读 · 0 评论 -
stack overflow异常分析及解决办法
stack overflow异常是程序中常常会碰到的,究其原因,是进程空间中的栈不够用。windows默认栈大小是1M,使用的栈超过了这个范围就会包stack overflow异常。 产生原因可以归结为两类:错误。程序中出现了不该出现的死循环,例如递归函数没有出口,这种情况,不管栈空间有多大,早晚要溢出的。这类错误,通过debug,比较容易查找。举个例子:long func(原创 2013-10-10 14:36:16 · 22408 阅读 · 0 评论