visual-c++相关内容
我有一个包含巨大数组的cpp文件。 我遇到致命错误(超过对象文件格式限制),并建议使用flag / bigobj 编译 在visual studio中设置此标志 解决方案 在
..
使用& 获取变量的地址可能会有问题,如果变量类型已重载 operator&()。例如, _com_ptr_ 具有运算符和( )重载了修改对象的副作用。 现在我有一个复杂的模板集,其功能如下: 模板 void process(const T * object) { // whatever } template void try
..
以下代码段导致在我希望调用move构造函数的地方调用复制构造函数: #include struct Foo { Foo(){puts(“Foo gets built! } Foo(const Foo& foo){puts(“Foo gets copied! } Foo(Foo& foo){puts(“Foo gets moved!”); } };
..
在C ++ throw; 当在catch块内执行时,会重新抛出当前捕获的异常。 在此回答中,提出了异常分派器的概念当使用复杂的异常处理时,通常会减少代码重复: try { CodeThatMightThrow } catch(...){ ExceptionHandler(); } 无效ExceptionHandler() { try { throw; } cat
..
是否可以在Windows上使用由g ++(mingw)编译的应用程序中由visual studio编译的库? 解决方案 如果库是用C ++编写的,并且暴露了一个C ++接口:no(因为g ++和VC ++之间名称不同)。 如果库是使用C语言编写的静态库(或使用 extern“C”接口):是,但某些注意事项适用。 如果库是具有C接口的DLL:是的,但您必须创建您的自己的导入库
..
我试图找出一个方法让我的程序取一个日期(如2003年2月2日),并显示两者之间的差异与另一个日期(如2012年4月2日,不包括闰年)。到目前为止,我只能确定如果日期在同一个月,只是通过减去“日”。在这个程序中,我使用2套“月”,“日”和“年”整数。我从这里走到哪里都很迷茫。这是我任务的一个完全可选的部分,但我想知道如何让它工作。这似乎对我很麻烦,但也许有一个简单的数学公式我不在想。 对不起,
..
我看到g ++和msvc之间的一些不同的行为围绕值初始化不可复制对象。考虑一个不可复制的类: class noncopyable_base { public: noncopyable_base(){} private: noncopyable_base(const noncopyable_base&); noncopyable_base& operator =(con
..
我有一个C ++应用程序,它使用大型数据数组,并注意到,当它运行内存不足,而仍有大量的内存可用。我已将代码缩减为一个示例测试用例,如下所示: void MemTest() { size_t Size = 500 * 1024 * 1024; // 512mb if(Size> _HEAP_MAXREQ) TRACE(“Invalid Size”); void * mem =
..
我正在一个项目中,我有许多由连接(数字等)形成的常量字符串。 例如,我有一个 LOCATION 宏格式化为 __ FILE __ 和 __ LINE __ 知道我在代码中的位置,当打印消息或错误时: #define _STR(x)#x #define STR(x)_STR(x) #define LOCATION __FILE__“(”STR(__ LINE__)“)”
..
我有一个类有两个重载的函数。如何从一个dll导出它,以及如何使用它由其他C ++类?我的类看起来像这样: #define DECLDIREXP __declspec(dllexport) #define DECLDIRIMP __declspec dllimport) class DECLDIREXP xyz { public: void printing(
..
说我有一些stl容器类的对象 obj 。我可以通过这种方式定义相同类型的其他对象: decltype(obj)obj2; 但我不能用这种方式为容器声明迭代器: decltype(obj):: iterator it = obj.begin(); 为什么?我做错了什么? 解决方案 您的代码根据最终的C ++ 0x草案(FDIS)格式良好。
..
最近引入了一个方法的重载,应用程序开始失败。 我们有 $ b b $ b setValue(const std :: wstring& name,const std :: wstring& value); std :: wstring avalue(func()); setValue(L“string”,avalue); std :: wstring bvalue(
..
STL容器要求存储的值是可复制构造和可分配的。 const T显然不是任何T的可分配类型,但我试图使用它(只是好奇),发现它编译,而且,表现为可分配类型。 vector v(1); v [0] = 17; 在Visual Studio 2008中成功运行并将v [0]分配给17. 解决方案 这不是别人建议的实现中的错误。 违
..
我希望你能帮助我,因为我不知道发生了什么。我在尝试将Beecrypt库添加到我的项目时出现以下错误: 致命错误C1010:预编译头。您忘了向您的来源添加“#include”stdafx.h“'吗? 其实我没有忘记添加#include “stdafx”到我的源。编译器将错误指向此.cxx文件的末尾: #define BEECRYPT_CXX_DLL_EXPORT #ifd
..
我有一个MS C ++项目(我们称之为项目A),我目前正在编译为静态库(.lib)。它定义了一个全局变量foo。我有另外两个项目,分别编译(分别称为B和C),每个链接共享静态库A。B和C是dll的,最终加载在同一个进程。我想在同一个过程中在B和C之间共享一个来自A的foo实例:单例。我不知道如何完成单例模式这里与项目A,因为它被静态编译成B和C单独。如果我在B和C中声明foo为extern,我在B
..
这里是我的问题。我有一个 BINARY_FLAG 宏: #define BINARY_FLAG static_cast(1
..
C ++: printf()格式规范是 float (Visual C ++) 以前我用%g 代替 float 和%lg 为 double 。 看起来规格已更改, float 未定义, double 是%g 。 我有内存中的位,我打印出来,所以铸造不是选项。 有没有办法可以使用 printf打印出 float )? 更新: 是为在嵌入式系统上使用的单元测试通用C
..
我找到找不到MSVCR90D.dll在调试模式与Visual C ++ 2008问题,但没有一个给定的答案真的给出了答案的问题。其中大多数指向关闭增量链接,但不解释错误的真正原因,以及如何修复而不关闭增量链接。 我想提一提我的情况与原来的问题有所不同。 任何人都可以使用C ++编译器。 解决方案 下面是编译器的输出。奇怪的是,第二次运行构建成功。但是我怀疑这个问题可能是由于运行
..
我想通过一个lambda函数指针,它嵌套在一个班,对Windows API的回调函数。我发现没有地方可以指定 __ stdcall 关键字。我用nm命令有人告诉我,编译只支持 __ CDECL ,但经过转储obj的文件,我发现编译将产生三个辅助函数( __ stdcall , __ cdecl , __ fastcall )。所以我的问题是,我怎么可以指定调用约定? 那些下面的代码是我的测试
..
此代码段(摘自这个问题)使用g ++(如所示)编译良好,所以只要模板在返回类型之前。相反,VC10不会编译该代码,并出现以下错误: 错误C2244:'A :: getAttr':无法匹配函数定义到现有的声明 如果我删除模板但是g ++尖叫这个错误: 错误:非模板'AttributeType'用作模板 注意: A :: template AttributeType'来表示它是
..