
C++
BAOLIANG196
这个作者很懒,什么都没留下…
展开
-
C++:fatal error LNK1169: 找到一个或多个多重定义的符号
错误:fatal error LNK1169: 找到一个或多个多重定义的符号原因:我们都知道一般高级语言程序编译的过程其中有编译、链接两步这两步: 1.编译是源代码生成obj二进制目标文件的过程, 注意一个源代码文件(指.cpp, 而非.h, .h已经被包含进.cpp中了)生成一个obj文件, 由于编译是独立的, 所以在两个独立的编译单元里是可以有重名的函数和变量的。例如a.hint n=10;原创 2017-06-30 14:53:56 · 12202 阅读 · 1 评论 -
C++:IsProcessInJob返回值问题
在调试一个作业(Job)程序时发现,如下代码总是返回TRUE,无论是从VS中启动调试还是从资源管理器中启动。BOOL bInJob = FALSE; IsProcessInJob(GetCurrentProcess(), NULL, &bInJob); if (bInJob) { MessageBox(NULL, TEXT("Process already in a转载 2017-06-30 11:03:29 · 769 阅读 · 1 评论 -
C++:auto_ptr智能指针的用法
转自: http://blog.youkuaiyun.com/monkey_d_meng/article/details/5901392C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。用法一: std::auto_ptr<T>m_example(new T()); 用法二:转载 2017-06-29 14:58:55 · 522 阅读 · 0 评论 -
C++:Windows下return,exit和ExitProcess的区别和分析
转自:http://www.cnblogs.com/jcss2008/archive/2009/03/18/1415519.html通常,我们为了使自己的程序结束,会在主函数中使用return或调用exit()。在windows下还有ExitProcess()和TerminateProcess()等函数。 本文的目的是比较以上几种结束程序的方式的区别,并分析其原理。首先我们用一个例子来说明几种结束转载 2017-06-28 10:04:41 · 4156 阅读 · 0 评论 -
C++:类静态变量的导出
动态链接库中导出静态成员变量 导出库头文件#pragma once#include "afx.h"#include <conio.h>#ifdef BUILDING_DLL //在stdafx.h中定义#define DLLIMPORT __declspec (dllexport) #else #define DLLIMPORT __declspec (dllimport)原创 2016-12-06 22:21:47 · 5022 阅读 · 1 评论 -
C++:struct和union 内存字节对齐问题
struct内存对齐问题1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有stru转载 2016-11-23 21:16:23 · 3738 阅读 · 2 评论 -
C++:VS2010中如何查看DLL的导出接口
最近在学习动态链接库时,好多教程提到使用Visual C++ 6.0 的Depends工具可以查看动态链接库中的导出接口。对于VC6.0,VC所带的Depends软件,在VC6安装目录下的tools文件夹里面,可以直接运行。但是VS2010中没有了Depends工具,如何查看DLL文件的导出接口呢? 解决方法:方法1:1.打开命令行窗口,运行vcvarsall.batVS2010里vcvarsall原创 2016-10-16 18:48:14 · 5831 阅读 · 0 评论 -
C++:char* 和 char[]
char*p,表示p是指向字符串的指针char arr[],表示arr是一个字符串数组string s,表示s是一个string类的对象,有自己的成员变量和成员函数,和前两者的区别较大,在下一篇博文中详细讨论通过下面的例子来看char*与char[]的区别:例子1:对比下面两个函数: 复制代码char* get_str1(){ char str[] = {"abcd"}; ret转载 2016-10-01 19:54:47 · 1192 阅读 · 0 评论 -
C++:extern "c"用法解析
引言C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 extern “C”的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern “C”后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译转载 2016-09-11 20:19:38 · 831 阅读 · 0 评论 -
C++:Struct 和 Union区别
转自:http://blog.youkuaiyun.com/firefly_2002/article/details/7954458一、Struct 和 Union有下列区别1.在存储多个成员信息时,编译器会自动给struct第个成员分配存储空间,struct 可以存储多个成员信息,而Union每个成员会用同一个存储空间,只能存储最后一个成员的信息。2.都是由多个不同的数据类型成员组成,但在任何同一时刻,Uni转载 2016-09-11 16:35:17 · 4369 阅读 · 0 评论 -
C++:类的成员函数存储方式(是否属于类的对象)
http://blog.youkuaiyun.com/richerg85/article/details/19540437转载 2016-05-16 20:59:54 · 561 阅读 · 0 评论 -
C++:指针详解
指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; int (*ptr)[3]; int *(*ptr)[转载 2016-05-12 11:49:43 · 539 阅读 · 1 评论