Tag: visual c ++

是! 一个安全的方式来转换为C ++布尔?

[这个问题与这个问题有关,但不一样。] 如果我尝试使用某些types的值作为布尔expression式,我会收到警告。 我有时候使用三元运算符( ?: :)来转换为布尔值,而不是压制这个警告。 使用两个不操作符( !! )似乎也是一样的。 这是我的意思: typedef long T; // similar warning with void * or double T t = 0; bool b = t; // performance warning: forcing 'long' value to 'bool' b = t ? true : false; // ok b = !!t; // any different? 那么,双重技术不是真的做同样的事情吗? 它是否比三元技术更安全? 这种技术对于非整数types是否同样安全(例如, void […]

是“懒人的enable_if”合法的C ++吗?

我经常使用一种我称之为“lazy man's enable_if ”的技术,在这里我使用decltype和逗号运算符来启用基于某些模板input的函数。 这是一个小例子: template <typename F> auto foo(F&& f) -> decltype(f(0), void()) { std::cout << "1" << std::endl; } template <typename F> auto foo(F&& f) -> decltype(f(0, 1), void()) { std::cout << "2" << std::endl; } 使用–std=c++11 ,g ++ 4.7+和Clang 3.5+可以很好地编译这段代码(而且它可以像我期望的那样工作)。 但是,当使用MSVC 14 CTP5,我得到这个错误抱怨foo已被定义: 错误错误C2995:'unknown-type foo(F &&)':函数模板已被定义c ++ – scratch main.cpp 15 所以我的问题是:“懒惰的人的enable_if […]

问题调用std :: max

我编译我的野牛生成的文件在Visual Studio中,并得到这些错误: … \ position.hh(83):error C2589:'(':'::'右侧的非法令牌 … \ position.hh(83):错误C2059:语法错误:'::' … \ position.hh(83):error C2589:'(':'::'右侧的非法令牌 … \ position.hh(83):错误C2059:语法错误:'::' 相应的代码是: inline void columns (int count = 1) { column = std::max (1u, column + count); } 我认为这个问题是与std :: max; 如果我将std :: max更改为等效代码,那么就没有问题了,但有没有更好的解决scheme而不是更改生成的代码? 这里是我写的野牛档案: // // bison.yy // %skeleton "lalr1.cc" %require "2.4.2" %defines %define parser_class_name "cmd_parser" %locations %debug %error-verbose […]

从path获取文件名

从path获取文件名最简单的方法是什么? string filename = "C:\\MyDirectory\\MyFile.bat" 在这个例子中,我应该得到“MyFile”。 没有扩展。

什么是“expressionSFINAE”?

在http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx,VC ++团队正式声明他们还没有实现C ++ 11核心function“Expression SFINAE”。 但是,从http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html复制的以下代码示例已被VC ++编译器接受。 例1: template <int I> struct A {}; char xxx(int); char xxx(float); template <class T> A<sizeof(xxx((T)0))> f(T){} int main() { f(1); } 例2: struct X {}; struct Y { Y(X){} }; template <class T> auto f(T t1, T t2) -> decltype(t1 + t2); // #1 X f(Y, Y); // […]

vcvarsall.bat需要python编译从visual studio 2015(v 14)

我正试图安装在windows 10下与python 3.5的numpy与视觉工作室2015年终极安装。 短版本:vs14文件夹C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC文件夹中缺lessvcvarsall.bat文件。 为什么? 长版本:运行pip install numpy给了我这个错误error: Unable to find vcvarsall.bat 研究这个错误让我有几个计算器的答案,帮助我找出python需要c ++编译器来编译一些软件包。 而且它需要使用用于编译python 3.5的相同版本的编译器来执行( 错误:无法findvcvarsall.bat )。 我的Python编译使用[MSC v.1900 64位(AMD64)] – 这是14(Visual Studio 2015) 进一步研究我的研究,我学到了: pip install给出了错误:无法findvcvarsall.bat get_build_version()从$python_install_prefix/Lib/distutils/msvc9compiler.py返回的版本应该用来findpathvcvarsall.bat对于我来说这个方法返回14.所以一切都正确。 现在当我查看文件夹C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC ,文件vcvarsall.bat丢失。 但是,当我看着文件夹C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC有一个vcvarsall.bat。 为什么vs 14.0中缺lessvcvarsall.bat?

这个expression意味着什么?为什么要编译?

打字错误后,编译和执行下列expression式(简化): if((1 == 2) || 0 (-4 > 2)) printf("Hello"); 当然,0不应该在那里。 为什么要编译,这个expression意味着什么? 原来的(简体)应该是这样的: if((1 == 2) || (-4 > 2)) printf("Hello"); 这没有一个编译: if((1 == 2) || true (-4 > 2)) printf("Hello"); if((1 == 2) || 1 (-4 > 2)) printf("Hello"); if((1 == 2) || null (-4 > 2)) printf("Hello");

我如何在Visual Studio 2010中进行并行生成?

我怎样才能让VS 2010一次运行多个C ++编译过程? 我的意思是平行build立目标模块; 我不感兴趣一次构build多个项目(我知道“工具”>“选项”>“构build并运行”,“并行项目构build的最大数量”,但这并不符合我的要求)。 基本上,我正在寻找Visual Studio的相当于“make -jN”。

Visual Studio:我可以复制一个项目的属性在另一个项目中使用吗?

我已经添加了几个目录,例如matlab,opencv等库来编译Visual Studio项目中我当前的C文件。 我所有即将到来的项目将需要相同的设置/属性。 我是否需要单独设置我的每个项目的属性,或者我可以做一些应用到所有?

在Visual Studio 2012中进行Googletesting

我正在尝试开始unit testing。 我下载了gtest的最新版本,并将其提取到A:\gtest作为指定的指示,我打开gtest.sln。 Visual Studio只允许我打开sln,如果我同意更新它。 然后当我尝试build立时,我得到一堆错误: 1>—— Build started: Project: gtest, Configuration: Debug Win32 —— 1> gtest-all.cc 1>a:\gtest\include\gtest\gtest-printers.h(550): error C2977: 'std::tuple' : too many template arguments 1> b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple' 1>a:\gtest\include\gtest\gtest-printers.h(558): error C2977: 'std::tuple' : too many template arguments 1> b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : […]