草庐IT

切换gcc版本

全部标签

c++ - 在 Windows 上从哪里获取 gccxml 的编译版本?

谁能指出我可以在Windows上获得编译版本的gccxml的地方? 最佳答案 更高版本可以在这里找到:http://sourceforge.net/projects/pygccxml/files/gccxml-setup/ 关于c++-在Windows上从哪里获取gccxml的编译版本?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3840268/

c# - 从 Windows 可执行文件中识别编译器版本

是否有可靠的方法来检测使用哪个编译器来编译和构建给定的Windows可执行文件?单独这个话题太宽泛了,所以我缩小范围:我只对C系列语言(C、C++、C#)感兴趣让我们假设可执行文件未出于隐藏此信息的目的而被篡改。VisualStudio和最著名的gnu编译器就足够了,因此无需处理非常陈旧或未广泛使用的编译器。对于C#,很明显使用了VisualStudio附带的编译器,因此在这种情况下是否可以获取Studio的版本(年份)和类型(express等)?编辑:从答案来看,似乎很难确定并且并不总是可靠的,因为必须使用试探法。那么,是否有任何编译器故意在可执行文件中插入某种“水印”?我猜是否有,

c++ - 模板特化导致 Windows 上的 MinGW 链接错误,而不是 Linux 上的 GCC

以下build设置在使用GCC(4.6.3)的Linux上运行良好,但不适用于使用GCC(4.7.2)的MinGW。$catMakefileall:g++-cfoo.cppg++-cbar.cppg++bar.ofoo.o-obar$catfoo.h#ifndefFOO_H#defineFOO_H#includetemplatevoidfoo(Tx){std::cout$catfoo.cpp#include"foo.h"templatevoidfoo(intx){std::cout$catbar.cpp#include"foo.h"intmain(){foo(1);}在Linux上,我

c++ - rand_r 不在范围内,gcc mingw 在 Windows 上的 cygwin 下

我正在尝试将一些代码从linux移植到cygwin下的windows。我发现这个奇怪的错误,其中“rand_r未在此范围内声明”。我将gcc4.8.1用作x86_64-w64-mingw32并且在它的搜索路径(-v选项)中它确实在正确的目录中查找。头文件已正确包含。我正在寻找解决这个问题的想法。是否有关于cygwin的一些事实我遗漏了,因此遇到了这个问题?有没有办法检查gcc是否确实接触了所需的文件? 最佳答案 与标准的rand函数相比,rand_r函数被认为是线程安全的。参见man3rand_r.一种选择是通过封装对rand的调用

windows - 如何在命令行中从重复显示切换到多个显示器

本质上,我想制作一个批处理文件,该文件在执行时会在两种状态之间切换。第一种状态是重复的显示器设置,而计算机将在两个屏幕上显示相同的内容,而另一种设置是新的显示器,因此您可以在两个显示器上看到两个不同的内容。我不知道可以执行此操作的命令,但它应该是可能的。我尝试查找它,但找不到任何相关内容。 最佳答案 只要您使用的是Windows7+DisplaySwitch.exe/clone将重复显示。这将扩展显示:DisplaySwitch.exe/extend希望这对您有所帮助。如果你想要快捷方式,也可以使用Win+P。

c# - 我应该如何在我的 C# 程序中使用 .NET Framework 3.5 检测正确的 Windows 8.1 操作系统版本?

我的以.NETFramework3.5为目标的C#程序无法检测到Windows8.1操作系统的正确版本:当6.3.9600是正确值时返回6.2.9200。Console.WriteLine(System.Environment.OSVersion.Version);//printsout6.2.9200我找到了这个帖子WhatistheOSversionforWindows8.1?其中提到了一个当前已损坏的链接。程序应该如何获取正确的值? 最佳答案 添加自定义应用程序list(右键单击可执行项目->添加->新项目...->查找应用程

c++ - Windows SDK 是否限制符合条件的 Windows 版本?

我们正在迁移到VisualStudio2017,VS2017提示我们将项目重新定位为两件事:WindowsSDK版本和平台工具集。目前我们的应用程序可以在较旧的Windows版本(至少到Server2003,可能更旧)上运行,我们需要保留相同的版本(我知道它们不再受支持,但这是客户的要求)。假设我们的代码(全部是C++,以防有所不同)不使用任何仅在较新版本的Windows上可用的API,将重新定位到较新版本的WindowsSDK限制或限制我们的应用程序将在哪些Windows版本上运行?虽然在这个主题上,将重新定位到更新版本的WindowsSDK有任何优点或缺点(例如性能)(再次假设我们

c - x86-64下的快速堆栈切换

在x86-64下切换堆栈的最少代码是多少?我正在尝试在没有getcontext或setjmp+内联汇编的情况下在Windows和Linux下实现纤程。它真的像交换$rsp和$rbp一样简单吗?因为我可以轻松做到。我只是不知道该怎么做。我对我的x86-64知识生疏了。 最佳答案 将RSP更改为指向不同的堆栈必须作为上下文切换的一部分来完成,上下文切换会保存旧线程/纤程中的所有寄存器并从新寄存器加载已保存的架构状态。不仅是RBP,还有所有RAX-RDI和R8-R15,以及RIP(通过jmp或ret)。我认为还有所有其他调用保留的架构状态

c++ - ms-extensions 标志对 gcc 有什么作用?

GCC有一个标志-fms-extensions。这个标志到底是做什么的?为什么它有时默认打开,它为什么存在? 最佳答案 根据gcc9.1.0源代码(greppedforflag_ms_extensions),效果是:(C)​​允许Microsoft版本的匿名union和结构。这包括对C11anonymousunionsandstructs的支持以及Microsoft-specificflavours,包括完全省略大括号成员列表,以及将成员放置在父namespace中,即使结构/union具有标识符也是如此。(C++)允许类成员与其类

windows - 设备驱动程序 IRQL 和线程/上下文切换

我是Windows设备驱动程序编程的新手。我知道某些操作只能在IRQLPASSIVE_LEVEL执行。例如,Microsoft有关于如何从内核驱动程序写入文件的示例代码:if(KeGetCurrentIrql()!=PASSIVE_LEVEL)returnSTATUS_INVALID_DEVICE_STATE;Status=ZwCreateFile(...);我的问题是:是什么阻止了在上面的KeGetCurrentIrql()检查之后引发IRQL?假设发生上下文或线程切换,当它返回到我的驱动程序时,IRQL会不会突然变为DISPATCH_LEVEL,然后导致系统崩溃?如果这不可能,那么