草庐IT

C++ 删除 static_cast<void*> (指针)行为

假设代码执行以下操作:T*pointer=newT();deletestatic_cast(pointer);结果是什么?未定义,内存泄漏,内存被删除? 最佳答案 行为未定义。关于delete表达式,C++标准说:Inthefirstalternative(deleteobject),ifthestatictypeoftheoperandisdifferentfromitsdynamictype,thestatictypeshallbeabaseclassoftheoperand’sdynamictypeandthestaticty

c++ - 使用 mingw 在 Linux 上交叉编译 Direct3D

如何配置mingw32以交叉编译适用于Windows的Direct3D应用程序?有没有可能?我实际上已经成功地编译了本教程中的代码:http://www.directxtutorial.com/Tutorial9/B-Direct3DBasics/dx9B4.aspx-在Kubuntu上使用Code::Blocks和i586-mingw32msvc-g++。我需要添加#defineUNICODE并删除#pragma...部分来执行此操作,并且我使用了/usr/i586-mingw32msvc/include和libs中的头文件也来自mingw包。但是我无法编译本教程中的代码:http:

c++ - Q在unicode中的应用

QApplication的构造函数采用(intargc,char**argv)来处理任何Qt特定的命令行参数。如果我的应用是unicode怎么办?我有一个wchar_t**argv?创建所有命令行参数的char*拷贝以传递给本身是unicode的库似乎有点愚蠢。 最佳答案 是的,会的。如果不是thisnote:Warning:OnUnix,thislistisbuiltfromtheargcandargvparameterspassedtotheconstructorinthemain()function.Thestring-dat

c++ - 杂乱的函数指针 : how to remove the warning?

正如我在thispost中提问和回答的那样.我有以下示例代码。#includecharfoo(){return'a';}charbar(){return'b';}charblurga(){return'c';}charbletch(){return'd';}char(*gfunclist[])()={foo,bar,blurga,bletch};char(*(*x())[])(){staticchar(*funclist[4])()={foo,bar,blurga,bletch};returnfunclist;}intmain(){printf("%c\n",gfunclist[0](

c++ - 找出几年中每个月的第十三天

我目前正在尝试解决USACO培训网站上的一些问题,为一个无关的C++编程竞赛做准备。但是,我一直卡在这个问题上:Doesthe13thofthemonthlandonaFridaylessoftenthanonanyotherdayoftheweek?Toanswerthisquestion,writeaprogramthatwillcomputethefrequencythatthe13thofeachmonthlandsonSunday,Monday,Tuesday,Wednesday,Thursday,Friday,andSaturdayoveragivenperiodofNye

c++ - Visual Studio : How to specify different runtime libraries for the linker?(/MTd、MDd 等)

我正在链接到VS2008中的几个库。如果我对链接器的了解是正确的,MTd用于静态链接而MDd用于动态链接(到DLL)。我的目标是静态链接一些库和动态链接其他库。项目选项似乎只有一个设置适用于链接器输入中的所有库。我该怎么做? 最佳答案 在您设置项目后,您的项目将获得一个合理的C运行时库默认值,具体取决于您如何回答新建项目向导的提示。您可以按如下方式检查和更改(如果需要):在解决方案资源管理器中右键单击相关项目,选择属性查看配置属性、C/C++、代码生成、运行时库。您可以根据需要链接其他库,您只需在“链接器”、“输入”、“附加依赖项”

c++ - 如何在 Visual C++ 2010 中打开资源字符串?

我在VisualC++中创建了一个基本的字符串表资源。我正在尝试访问该资源。但是,我的程序似乎找不到资源。这里:intmain(intargc,char*argv[]){HRSRChRsrc;hRsrc=FindResource(NULL,MAKEINTRESOURCE(IDS_STRING102),RT_STRING);if(hRsrc==NULL){printf("Notfound\n");}else{printf("Found\n");}}这个程序找不到资源,总是返回null。我创建了一个简单的位图资源,这个新程序可以很好地识别它。这里:intmain(intargc,char*

C++ : Read a file name from the command line and utilize it in my file

如何从命令行读取文件名并在我的C++代码文件中使用它?例如:./cppfileinputFilenameoutputFilename非常感谢任何帮助! 最佳答案 intmain(intargc,char**argv){stringinFile="";stringoutFile="";if(argc==3){inFile=argv[1];outFile=argv[2];}else{cout 关于C++:Readafilenamefromthecommandlineandutilizeiti

c++ - cmake -D <变量> :<type>=<value> what does the parameter "-D" mean

我正在尝试使用cmake安装opencv。在opencv说明页面中,我找到以下示例:cd~/opencvmkdirreleasecdreleasecmake-DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local..据我了解,我应该在我创建的新目录中使用cmake生成Makefile,在这个例子中应该是~/opencv/release。但我不太明白最后一行。在cmake帮助中,我发现:cmake-D:==createacmakecacheentry这是什么意思?特别是这部分:":=",我不明白为什么这个例子给出了"CMAKE

c++ - C++ 标准对超出目标类型范围的类型的强制转换结果有何规定?

最近我不得不执行一些从float到16位整数的数据类型转换。基本上我的代码减少到以下floatf_val=99999.0;shortintsi_val=static_cast(f_val);//si_valisnow-32768这个输入值是个问题,在我的代码中我忽略了检查浮点值的限制,所以我可以看到我的错误,但这让我想知道当必须这样做时语言的确切规则笨拙的Actor。我有点惊讶地发现类型转换的值(value)是-32768。此外,这是我在float的值超过16位整数的限制时得到的值。我用谷歌搜索了这个,但令人惊讶地发现缺乏关于它的详细信息。我能找到的最好的是来自cplusplus.co