草庐IT

c++ - 简单的 DirectX 11 程序运行时错误

我是DirectX11的新手,我已经设法在我的书中找到了绘制三角形一章。我写了这段代码,但出现运行时错误:“DirectX11.exe中0x00cd14e6处的未处理异常:0xc0000005:访问冲突读取位置0x00000000。”我的编译器显示错误出在InitPipeline函数中,但我找不到那里的错误。我做错了什么?代码:#include#include#include#include#include#pragmacomment(lib,"d3d11.lib")#pragmacomment(lib,"d3dx11.lib")#pragmacomment(lib,"d3dx10.l

c++ - Visual Studio 11 Developer Preview 的开发适用性

我最近下载了VisualStudio11DeveloperPreview,它看起来棒极了。我阅读了下载页面上的细则,上面写着:VisualStudio11DeveloperPreviewisprereleasesoftwareandshouldnotbeusedinproductionscenarios.我将仅使用VS11的C++编译器/IDE,所以有人知道有哪些错误会阻止我在生产场景中使用VS11吗?我真的很想开始使用它,我不知道是C++部分没有完成,还是只是一些与我无关的不适合该领域的TeamFoundationSomethingorother。 最佳答

c++ - 不持有锁的本地静态初始化避免了 C++11 中可能出现的死锁?

论文http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm提出了一种算法,该算法在局部静态变量的初始化期间不需要持有锁,但仍会导致通过变量定义的并发控制流等待初始化完成。论文说这样做的好处是避免了可能出现的死锁Thecoreproblemwithfunction-localstatic-durationobjectinitializationisthatthecontainingfunctionmaybeinvokedconcurrently,andthusthedefinitionmayexecuteconc

C++11 for_each 和 lambdas 优化

我正在测试以下代码:#include#include#include#includeintmain(intargc,char*argv[]){std::vectorv(10000000);clock_tthen=clock();if(argc我正在使用g++4.6编译它,没有任何优化标志,这是我得到的:[javadyan@myhostexperiments]$./a.out260000[javadyan@myhostexperiments]$./a.outaaa330000[javadyan@myhostexperiments]$使用-O1优化会产生以下(意料之中的)结果:[javad

c++ - 如何在 Metro 应用程序中打印到 C++ 中的 Visual Studio 11 控制台/日志?

我正在尝试弄清楚如何在VisualStudio11C++Metro应用程序中打印到调试器控制台/日志。我尝试了多种方法来打印到C++Metro应用程序中的日志(cout、Windows.System.Diagnostics、MSDN和Metro开发站点上的文档)。如何打印到控制台? 最佳答案 OutputDebugString:Sendsastringtothedebuggerfordisplay.某些WindowsAPI可从Metro风格应用程序使用,包括此功能。您可以从Metro风格应用程序中找到其他与诊断相关的WindowsA

c++11 统一初始化不适用于 clang++

我从thiswikipediapage复制了以下示例:structBasicStruct{intx;doubley;};structAltStruct{AltStruct(intx,doubley):x_{x},y_{y}{}private:intx_;doubley_;};BasicStructvar1{5,3.2};AltStructvar2{2,4.3};intmain(intargc,charconst*argv[]){return0;}然后我尝试用编译它clang++-Wall-std=c++11test.cpp但是我得到这个错误:test.cpp:17:11:error:n

c++ - 具有三元的简单 C++11 constexpr 阶乘超出了最大模板深度

如果我使用专门化编写编译时阶乘函数,则以下代码就足够了,并将正确提供120作为fact1()的结果:templateconstexprsize_tfact1(){returnN*fact1();}templateconstexprsize_tfact1(){return1;}但是,对于单个函数体和三元运算符,如以下代码所示,G++4.7和Clang++3.2都超过了它们的最大模板实例化深度。看来1永远不会从fact2返回.为什么fact2()的定义是这样的?不返回120?templateconstexprsize_tfact2(){returnN==0?1:N*fact2();}

c++ - C++11 中的泛型函数指针

我目前正在用C++x0编写一个方法执行队列。我已经实现并验证了基本的队列机制,但想用一个选项来修改它,让push()自动删除所有以前对特定方法的调用:queue.push(this,&Obj::foo,1);queue.push(this,&Obj::foo,2);queue.push(this,&Obj::foo,3);应该和调用一样queue.push(this,&Obj::foo,3);到目前为止,我的代码如下所示:队列.h:#pragmaonce#include#includeusingstd::vector;usingstd::function;usingstd::bind;

C++11 局部命名引用返回值(xvalue)?

我们有以下类型X和函数f:structX{...};Xf(){...};现在考虑另一个函数g的三个替代定义:(1)voidg(){Xx=f();...}(2)voidg(){X&x=f();...}(3)voidg(){X&&x=f();...}三种不同情况下定义的行为(或潜在行为)有何不同?(假设占位符'...'代码在三种情况下是相同的)更新:如果g返回一个X会怎样:以下是否合法且正确?Xg(){X&&x=f();...returnmove(x);}(此举是否必要,是否有任何作用?)您是否希望RVO链接以便下面产生相同的代码?Xg(){Xx=f();...returnx;}

c++ - thread::get_id (C++11) 是免费的吗?

我想测试调用我的一个类的不同函数的线程。我有一个关键时间线程,我不希望任何人调用一个可能调用new的函数,以便从该线程调用。但是,由于这2个函数是公共(public)的,我无法通过语言强制执行。我的想法是测试线程id。假设我可以确保初始化线程ID的调用在正确的线程中,我只需要在其他调用中调用thread::get_id()并与我保存的线程ID进行比较。问题是我也想在关键线程中测试这个ID,但我不能锁定那个线程。因此我的问题是:thread::get_id()是否没有锁定(最糟糕的执行时间是什么时候)? 最佳答案 标准不保证threa