草庐IT

C++: vector 边界

我来自Java,目前正在学习C++。我正在使用Stroustrup的ProgammingPrinciplesandPracticeofUsingC++。我现在正在使用vector。在第117页上,他说访问vector的不存在元素将导致运行时错误(在Java中相同,索引越界)。我正在使用MinGW编译器,当我编译并运行这段代码时:#include#include#includeintmain(){std::vectorv(6);v[8]=10;std::cout它给我作为输出10。更有趣的是,如果我不修改不存在的vector元素(我只是打印它期望运行时错误或至少一个默认值)它会打印一些大

c++ - 使用 cmake 生成项目时 Eclipse 索引器正确的 c++11 语法突出显示

我知道您可以使用此处描述的GXX_EXPERIMENTALhack启用正确的语法突出显示:EclipseCDTindexerdoesnotknowC++11containers但我认为,在使用cmake生成项目时,根本不需要触及项目设置。所以。有更简单的解决方案吗? 最佳答案 答案很简单。eclipsecdt生成器在解析符号时会忽略使用add_definitions(...)添加的定义。相反,它使用CMAKE_CXX_COMPILER_ARG1。所以你所要做的就是:在调用cmake时添加-DCMAKE_CXX_COMPILER_AR

c++ - 未定义对 _Unwind_Resume 和 __gxx_personality_v0 的引用

我正在尝试使用JsonCpp库。我在Windows上使用MinGW和CodeBlocks。当我包含来自jsonheader的任何内容时,我的链接器崩溃并发出这两个错误。我开始环顾四周,发现另外两个问题基本上描述了我的问题:problemwithg++and"undefinedreferenceto`__gxx_personality_v0'"Whatis__gxx_personality_v0for?如果我将两个缺失的变量声明为void指针,如下所示,问题就会消失:void*__gxx_personality_v0=0;void*_Unwind_Resume=0;但是,我不明白为什么会

c++ - direct.h 文档

我正在尝试编写一小段代码来打印给定目录中的文件。我已经看到有关使用direct.h库执行此操作的引用资料,但我找不到有关头文件及其方法的任何文档。这个图书馆过时了吗?还有另一种方法可以在C++中列出目录的所有文件名吗? 最佳答案 似乎这个头函数不是为这个任务设计的,见http://msdn.microsoft.com/en-us/library/as5kw0ze(v=vs.110).aspx使用FindFirstFile,FindNextFile和FindClose像这样循环examplecode

windows - 在 Windows "#error "上构建 boost 时出错 Not ARM ""& "错误 : No best alternative for"

我正在使用mingw在Windows上构建boost并收到诸如“#error“NotARM””或“错误:没有最佳选择...”之类的错误。这些错误是我应该担心的,还是只是在测试它所构建的系统?默认输出中有很多噪音,但将输出的压缩版本放在下面。谢谢...found13targets......updating5targets...common.mkdirbbuild\boost\bin.v2\libs\contextcommon.mkdirbbuild\boost\bin.v2\libs\context\configcommon.mkdirbbuild\boost\bin.v2\libs\

c++ - mingw 构建错误 : undefined reference to `__chkstk_ms'

我刚刚在windows上安装了mingw,写了一个helloWorld程序来测试一下。代码:#includeintmain(){printf("hello,world!\n");return0;}结果:C:/MinGW/lib/crt2.o:crt1.c:(.text+0x1f1):undefinedreferenceto`__chkstk_ms'C:/MinGW/lib/libmingwex.a(glob.o):glob.c:(.text+0x5e3):undefinedreferenceto`__chkstk_ms'C:/MinGW/lib/libmingwex.a(glob.o)

c++ - 在 QTCreator 中使用 MinGW 编译 c++ 和 cuda 代码

我正在尝试编译简单的cuda程序(我从CompilingCudacodeinQtCreatoronWindows获取源代码)这是我的.pro文件:TARGET=Cuda#DefineoutputdirectoriesDESTDIR=releaseOBJECTS_DIR=release/objCUDA_OBJECTS_DIR=release/cuda#SourcefilesSOURCES+=main.cpp#Thismakesthe.cufilesappearinyourprojectOTHER_FILES+=vectorAddition.cu#CUDAsettings这是编译器输出:1

c++ - 在另一台计算机上启动使用 MinGW 编译的 Windows 应用程序时出现库链接错误

我编写了一个简单的HelloWorld控制台应用程序,并使用以下命令之一在Windows7上使用MinGW编译器对其进行了编译:gcc-Wall-pedanticHello.c-oHello.exeg++-Wall-pedanticHello.cpp-oHello.exe但是编译器将一些自己的动态库链接到应用程序中,当我将可执行文件复制到另一台未安装MinGW的Windows7计算机时,我遇到了缺少库的错误。在Linux上,这个问题通过包系统解决,它会自动安装所有需要的库,但在Windows中,您肯定不想告诉您的用户安装MinGW才能运行您的程序。所以我的问题是:如何正确链接所有库以及

c++ - 如何使用 mingw 在代码块中的 exe 上启用 ASLR、DEP 和 SafeSEH?

我尝试在ASLR的链接器选项中使用-dynamicbase-pie和-e_mainCRTStartup但是当我在ollydbg中加载它时,它总是以400000加载 最佳答案 您可以使用-Wl,--nxcompat启用DEP。您也可以以相同的方式将--dynamicbase传递给链接器,但遗憾的是它不会发出必要的重定位表。作为解决方法,您可以传递-Wl,--dynamicbase,--export-all-symbols。像main这样的单个符号的显式__declspec(dllexport)也可以工作,这是目前Rust编译器中使用的

windows - 关闭时不会调用 SetConsoleCtrlHandler

我编写了一个在控制台中运行的应用程序,需要在系统关闭或用户注销之前进行快速备份。我的测试应用程序使用信号写入一个文件,并在手动关闭控制台窗口(单击X)时工作。但是当控制台在关机或注销时关闭时它不起作用。根据我在MSDN上阅读的内容,这应该可行。程序是用cygwin64编译的,会不会是这个问题?#include#include#include#includeBOOLWINAPImyHandler(DWORDsignal){switch(signal){caseCTRL_C_EVENT:printf("ctrl-c\n");break;caseCTRL_BREAK_EVENT:printf