标签: visual-c++

MSVC-Wall中标准头文件中的数千个警告是什么?

有些人似乎建议你使用-Wall,但是当我做了一个小测试项目,它只是有一个main.cpp的一些包括,我得到5800个警告他们大多在标准头文件或窗口标题.

这是预期的行为吗?如何使编译警告免费?

这里有一些阅读乐趣:

1>c:\program files\microsoft visual studio 10.0\vc\include\stdint.h(105): warning C4668: '_INTPTR' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(109): warning C4820: '_wfinddata64i32_t' : '4' bytes padding added after data member '_wfinddata64i32_t::attrib'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(114): warning C4820: '_wfinddata64i32_t' : '4' bytes padding added after data member '_wfinddata64i32_t::name'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(118): warning C4820: '_wfinddata64_t' : '4' bytes padding added after data member '_wfinddata64_t::attrib'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(488): warning …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-warnings visual-c++

63
推荐指数
4
解决办法
2万
查看次数

如何在Visual C++ 2008中创建UTF-8字符串文字

在VC++ 2003中,我可以将源文件保存为UTF-8,并且所有字符串都按原样使用.换句话说,以下代码将按字符串打印到控制台.如果源文件保存为UTF-8,则输出将为UTF-8.

printf("Chinese (Traditional)");
printf("??? (??)");
printf("??? (??)");
printf("Chinês (Tradicional)");
Run Code Online (Sandbox Code Playgroud)

我已经使用UTF-8 BOM保存了UTF-8格式的文件.但是使用VC2008进行编译会导致:

warning C4566: character represented by universal-character-name '\uC911' 
cannot be represented in the current code page (932)
warning C4566: character represented by universal-character-name '\uAD6D' 
cannot be represented in the current code page (932)
etc.
Run Code Online (Sandbox Code Playgroud)

导致这些警告的字符已损坏.适合语言环境的语言(在本例中为932 =日语)将转换为语言环境编码,即Shift-JIS.

我找不到让VC++ 2008为我编译的方法.请注意,我在源文件中使用的区域设置无关紧要.似乎没有一个语言环境说"我知道我在做什么,所以不要f $%## ng更改我的字符串文字".特别是,无用的UTF-8伪语言环境不起作用.

#pragma setlocale(".65001") 
=> error C2175: '.65001' : invalid locale
Run Code Online (Sandbox Code Playgroud)

"C"也不是:

#pragma setlocale("C") 
=> see warnings above (in particular locale is still 932)
Run Code Online (Sandbox Code Playgroud)

似乎VC2008强制所有字符进入指定的(或默认)语言环境,并且该语言环境不能是UTF-8.我不想更改文件以使用转义字符串,如"\ xbf\x11 ...",因为相同的源代码是使用gcc编译的,可以很好地处理UTF-8文件.

有没有办法指定源文件的编译应该保持字符串文字不变?

换句话说,在编译源文件时,我可以使用哪些编译标志来指定与VC2003的向后兼容性.即不要改变字符串文字,按字节顺序使用它们.

更新

感谢您的建议,但我想避免使用wchar.由于这个应用程序专门处理UTF-8中的字符串,因此使用wchar会要求我将所有字符串转换回UTF-8,这应该是不必要的.所有输入,输出和内部处理均采用UTF-8格式.这是一个简单的应用程序,在Linux和使用VC2003编译时工作正常.我希望能够使用VC2008编译相同的应用程序并使其工作. …

c++ utf-8 visual-c++

62
推荐指数
6
解决办法
5万
查看次数

GCC与Visual Studio?

在Visual Studio 2008中使用GCC而不是VC++有多难?显然,某些关键字不匹配,有些可能无法获得语法突出显示(除非您创建了新的语言服务).

这是一个'makefile项目',几乎是什么?

gcc makefile visual-studio-2008 visual-studio visual-c++

61
推荐指数
3
解决办法
6万
查看次数

如何向Visual Studio项目添加其他库?

Allergro是一个用于图形处理的开源C++插件库.如何将此库添加到我的编译器?

这些说明对我来说不起作用,因为我有Windows 7.我不知道操作系统是否重要.我有Visual Studio Express Edition.该库是.dll文件.如何将其添加到我的项目中?

c++ shared-libraries visual-c++ libraries

61
推荐指数
3
解决办法
19万
查看次数

我可以在没有Visual Studio的情况下下载Visual C++命令行编译器吗?

根据标题.我不想下载整个Visual C++安装程序,只需要下载"cl.exe"以及在Windows上编译和链接C++程序所需的其他程序.

c++ winapi visual-c++

61
推荐指数
5
解决办法
6万
查看次数

此模板代码如何获得数组的大小?

我想知道为什么这种代码可以得到测试数组的大小?我对模板中的语法不熟悉。也许有人可以解释下代码的含义template<typename,size_t>。此外,参考链接也是首选。

#define dimof(array) (sizeof(DimofSizeHelper(array)))
template <typename T, size_t N>
char(&DimofSizeHelper(T(&array)[N]))[N];

void InitDynCalls()
{
    char test[20];
    size_t n = dimof(test);
    printf("%d", n);
}

Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

61
推荐指数
2
解决办法
5332
查看次数

如何在VC++项目中关闭Unicode?

我在Visual Studio 2008中有一个VC++项目.

它在编译器命令行(/D "_UNICODE" /D "UNICODE")上定义unicode的符号,即使我没有在项目的预处理器部分中打开此符号.

替代文字http://i26.tinypic.com/14nz693.jpg

因此,我正在编译所有Win32库函数的Unicode版本,而不是ANSI版本.例如在WinBase.h中,有:

#ifdef UNICODE
#define CreateFile  CreateFileW
#else
#define CreateFile  CreateFileA
#endif // !UNICODE
Run Code Online (Sandbox Code Playgroud)

在VC++项目中打开unicode的位置,我该如何将其关闭?

unicode visual-studio visual-c++

60
推荐指数
5
解决办法
10万
查看次数

MS C++ 2010和mspdb100.dll

微软的C++编译器和链接器似乎与它有着奇怪的关系mspdb100.dll.当然,从IDE运行时,编译器和链接器工作正常.从命令行运行任何一个时,我收到一个错误.

没问题,我找到了DLL并将其复制到目录中.现在编译器工作正常,但链接器死了.

我可以通过在我的PATH中添加"%VS10%\ Common7\IDE"来解决问题,但由于各种原因(性能,系统纯度,强迫症等),我不想这样做.为什么这个设置如此敏感,我还能做些什么来解决它?

dll dependencies visual-studio-2010 visual-studio visual-c++

60
推荐指数
3
解决办法
7万
查看次数

在Visual C++ 2010 Express中安装OpenCV 2.4.3

如何在VC++ 2010 Express下安装和使用OpenCV 2.4.3?

c++ opencv visual-c++

60
推荐指数
1
解决办法
12万
查看次数

GCC值得在Windows上用来取代MSVC?

我目前使用Visual Studio 2010在Windows上使用C++进行开发.在C++ 11正式发布之后,我开始使用MSVC中已有的一些功能.但是,正如预期的那样,绝大多数新变化都不受支持.

我想也许即将推出的Visual Studio版本会添加这些新功能.然而,看完之后看起来很少会改变.

因此,我很好奇在Windows而不是MSVC上使用GCC的可行性,因为它似乎已经支持绝大多数C++ 11.据我所知,这意味着使用MinGW(我还没有看到任何其他本地Windows版本的GCC).但我对这是否值得尝试有疑问:

  • 它可以用作cl.exe的替代品,还是会涉及很多黑客和兼容性问题,以使Visual Studio使用不同的编译器?
  • 在我看来,Visual Studio的主要卖点是它的调试器.如果您使用不同的编译器,它仍然可用吗?
  • 由于GCC来自*nix世界,并且不是Windows原生的,与使用本机MSVC编译器相比,创建本机Windows应用程序是否存在代码质量问题?(如果重要的话:我的大部分项目都是游戏.)
  • 换句话说,我编译的exe的质量是否会受到使用非Windows本机编译器的影响?

c++ windows gcc visual-c++ c++11

59
推荐指数
3
解决办法
5万
查看次数