Questions tagged «visual-c++»

Microsoft Visual C ++是Windows的C,C ++和C ++ / CLI编译器。编译器的最新版本是Visual C ++2019。编译器支持以下语言:C(支持C90以及Visual Studio 2019中ISO C ++标准的大多数C99和C11部分);C ++(自Visual Studio 2019起支持大多数C ++ 11,C ++ 14和C ++ 17功能以及某些C ++ 20功能)C ++ / CLI(提供与C#等.NET语言的互操作性)。


11
为什么Visual C ++缺乏重构功能?
在Visual Studio 2008中使用C ++进行编程时,为什么没有使用C#时在重构菜单中看到的功能? 我经常使用“重命名”,当它不存在时,您真的会错过它。我确定您可以获得提供此功能的插件,但是为什么在使用C ++时却不将其集成到IDE中呢?这是由于必须解析C ++的方式引起的麻烦吗?

4
错误LNK2005:MSVCRT.lib(MSVCR100.dll)中已定义的xxx C:\ something \ LIBCMT.lib(setlocal.obj)
我正在使用DCMTK库读取Dicom文件(医学图像处理中使用的图像格式。)在编译此DCMTK源代码时遇到问题。DCMTK使用其他一些外部库(zlib,tiff,libpng,libxml2,libiconv)。我知道所有库都应使用相同的代码生成选项来生成。 我已经下载了这些支持库的编译版本,这些支持库是使用“多线程DLL”运行时选项(/ MD)编译的。在DCMTK源代码的每个项目中,我确保运行时选项为“多线程DLL”(/ MD)。但是仍然出现这些错误: Error 238 error LNK2005: ___iob_func already defined in MSVCRT.lib(MSVCR100.dll) C:\dcmtk-3.5.4-src\CMakeBinaries\dcmpstat\apps\LIBCMT.lib(_file.obj) dcmp2pgm Error 239 error LNK2005: __lock_file already defined in MSVCRT.lib(MSVCR100.dll) C:\dcmtk-3.5.4-src\CMakeBinaries\dcmpstat\apps\LIBCMT.lib(_file.obj) dcmp2pgm Error 240 error LNK2005: __unlock_file already defined in MSVCRT.lib(MSVCR100.dll) C:\dcmtk-3.5.4-src\CMakeBinaries\dcmpstat\apps\LIBCMT.lib(_file.obj) dcmp2pgm Error 241 error LNK2005: __initterm_e already defined in MSVCRT.lib(MSVCR100.dll) C:\dcmtk-3.5.4-src\CMakeBinaries\dcmpstat\apps\LIBCMT.lib(crt0dat.obj) dcmp2pgm Error 242 …

8
memset()或值初始化以将结构归零?
在Win32 API编程中,通常将Cstruct与多个字段一起使用。通常,其中只有几个具有有意义的值,而所有其他值都必须归零。这可以通过以下两种方式之一来实现: STRUCT theStruct; memset( &theStruct, 0, sizeof( STRUCT ) ); 要么 STRUCT theStruct = {}; 第二个变体看起来更干净-它是单线的,它没有任何可能被错误键入并导致植入错误的参数。 与第一个变体相比,它有什么缺点吗?使用哪个变体,为什么?



9
适用于本机Visual Studio开发人员的有用加载项或插件
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 Visual Studio有很多不同的加载项,请参见Visual Studio Gallery 。请分享您的经验和收藏。 作为动力,以下是一些我的最爱: 版本控制版本[F / O]-非常方便的扩展,用于自动版本编号 SlickEdit Gadgets [F]-有用的编辑器小工具,内置文件浏览器... SlickEdit Tools [C]-编辑和版本控制工具 重构!for C ++ [F / C]-C ++代码重构,例如C# WiX [F / O]-使用XML进行Windows安装程序设置 AnkhSVN [F / O]-从IDE内部使用Subversion 可视泄漏检测器[F / O]-调试问题的帮助程序 Parasoft C ++ test [C]-代码质量保证套件 Parasoft Insure ++ [C]-运行时内存分析 RockScroll [F]-滚动长文件的助手 Axialis …


11
C ++成员函数中的“ if(!this)”有多糟糕?
如果我遇到if (!this) return;了应用程序中的旧代码,这有多严重的风险?它是危险的滴答定时炸弹,需要立即在应用程序范围内进行搜索并破坏工作,还是更像是一种可以悄悄放置的代码气味? 当然,我不打算编写执行此操作的代码。相反,我最近在一个旧的核心库中发现了一些东西,供我们的应用程序的许多部分使用。 想象一个CLookupThingy类具有非虚拟 CThingy *CLookupThingy::Lookup( name )成员函数。显然,在那个牛仔时代,一位程序员遇到过多次崩溃,这些崩溃CLookupThingy *是从函数传递NULL的,而不是修复数百个调用站点,而是安静地修复了Lookup(): CThingy *CLookupThingy::Lookup( name ) { if (!this) { return NULL; } // else do the lookup code... } // now the above can be used like CLookupThingy *GetLookup() { if (notReady()) return NULL; // else etc... } CThingy *pFoo = …
74 c++  visual-c++  gcc 

7
是否使用#pragma警告推送/弹出来临时更改警告级别的正确方法?
有时很难编写完全不会发出警告的C ++代码。但是,启用警告是一个好主意。因此,通常有必要禁用某些特定构造周围的警告,并在所有其他代码段中启用警告。 到目前为止,我已经看到了两种方法。 第一个是使用#pragma warning( push )和#pragma warning( pop ): #pragma warning( push ) #pragma warning( disable: ThatWarning ) //code with ThatWarning here #pragma warning( pop ) 第二种是使用#pragma warning( default ): #pragma warning( disable: ThatWarning ) //code with ThatWarning here #pragma warning( default: ThatWarning ) 我在第二个变体中看到的问题是它丢弃了原始警告级别-警告可能在此之前已关闭,或者其警告级别可能已更改。使用default将丢弃这些更改。 第一种方法看起来很干净。有什么问题吗?有没有更好的方法可以达到相同目的?



11
PCH警告:标头停止不能在宏或#if块中-Visual C ++ 2010 Express SP1
这是从可能正在运行的网站粘贴的。我进行了一些谷歌搜索,发现我现在遇到的问题是我今天下载的Visual C ++ 2010 SP1的结果,现在出现此错误: PCH Warning: header stop cannot be in a macro or #if block. 希望有人能够帮助我! #ifndef APP_STATE_H #define APP_STATE_H #include "Framework.h" class AppState; //this line is giving me the error //define two classes #endif Framework.h: #ifndef OGRE_FRAMEWORK_H #define OGRE_FRAMEWORK_H #include <OgreCamera.h> #include <OgreEntity.h> #include <OgreLogManager.h> #include <OgreOverlay.h> …
70 c++  visual-c++ 

10
fopen已弃用警告
在Visual Studio 2005 C ++编译器上,当我的代码使用fopen和此类调用时,出现以下警告。 1>foo.cpp(5) : warning C4996: 'fopen' was declared deprecated 1> c:\program files\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen' 1> Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' 我该如何预防?

4
错误LNK2038:检测到“ _MSC_VER”不匹配:值“ 1600”与CppFile1.obj中的值“ 1700”不匹配
我将项目从VS2010转换为VS2012,但是在某些项目中出现_MSC_VER链接器错误。经过长时间的谷歌浏览后,我发现问题是由于在VS2010中创建的库与VS2012的链接所致。 我如何找出哪个项目导致了错误?在这里,我引用错误: Error 6 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile2.obj) Projectname2 Error 15 error LNK2001: unresolved external symbol "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@std@@CAXPAV123@@Z) D:\ProjectLocation\Projectname1.lib(CppFile3.obj) Projectname2 Error 13 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.