visual-c++ 相关问题

Microsoft Visual C ++是Windows的C,C ++和C ++ / CLI编译器。最新版本的编译器是Visual C ++ 2017.编译器支持以下语言:C:支持C90和ISO C ++标准的大部分C99和C11部分,自Visual Studio 2017 C ++开始:支持大多数C ++ 11功能以及Visual Studio 2017 C ++ / CLI中的一些C ++ 14和C ++ 17功能

视觉工作室中有状态分配器?看起来有点坏了 - 有没有办法在 VS 中编写一个有效的有状态自定义分配器?

将某些代码移植到 VS 不起作用,因为 std::allocator 的实现不能正确支持具有状态的分配器。 从在 gcc 和 clang 上运行良好的代码示例来看,它看起来...

回答 1 投票 0

Visual Studio Express:致命错误 c1060,编译器堆空间不足

我正在尝试使用 VC 11 从源代码构建一个程序。当编译器即将完成时,它会引发本文标题中提到的错误。 正如我在这里和其他论坛上读到的那样,我...

回答 8 投票 0

汇编和模板类

我正在开发一个小项目,并尝试将一些硬编码值用于内联汇编。为此,我使用模板。我创建了一个代码片段来显示我所看到的 #包括 我正在开发一个小项目,并尝试将一些硬编码值用于内联汇编。为此,我使用模板。我创建了一个代码片段来显示我所看到的 #include <iostream> template <size_t T> struct MyClass { size_t myValue = T; void doSomething() { size_t value = T; __asm { mov eax, [T] mov [value], eax } std::cout << value << std::endl; } }; int main() { auto o = new MyClass<999>(); o->doSomething(); return 0; } 事实证明,对于汇编代码,它试图使用数据段而不是“直接将数字粘贴到那里” ; 25 : { push ebp mov ebp, esp push ecx ; 26 : auto o = new MyClass<999>(); push 4 call ??2@YAPAXI@Z ; operator new add esp, 4 ; 14 : size_t value = T; mov DWORD PTR _value$2[ebp], 999 ; 000003e7H ; 26 : auto o = new MyClass<999>(); mov DWORD PTR [eax], 0 mov DWORD PTR [eax], 999 ; 000003e7H ; 15 : __asm ; 16 : { ; 17 : mov eax, [T] mov eax, DWORD PTR ds:0 ; 18 : mov [value], eax mov DWORD PTR _value$2[ebp], eax ; 19 : } ; 20 : std::cout << value << std::endl; 我正在使用 Visual Studio 2015。还有其他方法可以实现此目的吗? 啊,多么可爱又扭曲的问题啊! 我尝试使用 T 初始化 constexpr 变量。结果是相同的 - 从内存加载值。宏可用于将文字传递给内联汇编,但它们与模板不能很好地混合。 使用 T 在类中初始化枚举在理论上应该可行(https://msdn.microsoft.com/en-us/library/ydwz5zc6.aspx提到枚举可以在内联汇编中使用),但是在内联汇编使 Visual Studio 2015 编译器崩溃:-)。 似乎有效的是一个函数模板,它使用模板参数声明一个枚举,然后在内联程序集中使用该枚举。如果必须将其放在模板类中,则可以在类中实例化模板函数,如下所示: #include <iostream> template <size_t T> void dosomething() { enum { LOCALENUM = T }; size_t value = 0; __asm { mov eax, LOCALENUM mov[value], eax } std::cout << value << std::endl; } template <size_t T> struct MyClass { size_t myValue = T; void doSomething() { ::dosomething<T>(); } }; int main() { //dosomething<999>(); auto o = new MyClass<999>(); o->doSomething(); return 0; } 这会产生以下汇编代码: auto o = new MyClass<999>(); 001B1015 mov dword ptr [eax],0 001B101B mov dword ptr [eax],3E7h o->doSomething(); 001B1021 mov eax,3E7h <--- Victory! 001B1026 mov dword ptr [ebp-4],eax 001B1029 mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (01B2048h)] 001B102F push offset std::endl<char,std::char_traits<char> > (01B1050h) 001B1034 push dword ptr [ebp-4] 001B1037 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (01B2044h)]

回答 1 投票 0

纯虚拟类上的DECLSPEC_NOVTABLE?

这可能是习惯性的编程冗余。我注意到标头中定义的一堆接口上有 DECLSPEC_NOVTABLE ( __declspec(novtable) ): 结构 DECLSPEC_NOVTABLE IStuff :公共 IOb...

回答 2 投票 0

C++ 模板化参数包在 gcc/clang 上编译,在 MSVC 上出错

我已将我的错误归结为这种情况。我有一个基于 maplibre-gl 中的变体代码的自定义变体片段。它继承自 std::variant,并自行进行一些额外的模板检查

回答 1 投票 0

在 MSVC C++ 中强制内联 lambda

接下来的代码在 CLang/GCC 中编译,并成功内联 lambda: 在线尝试一下! #包括 int main() { 整数x=0; 自动 f = [&]() __attribute__((always_inline)) { ...

回答 1 投票 0

为什么卸载 Microsoft Visual C++2015-2019 Redistributable 后注册表项仍显示为已安装?

我正在查看注册表项:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio .0\VC\Runtimes\X64 “已安装”值为 1,表示 Microsoft Visua...

回答 1 投票 0

如何防止编译器“优化”SIMD常量来查找表?

一个例子可能是最好的,所以考虑这个代码(忽略逻辑,这是无意义的): #包括 auto foo(long long const a[], size_t n) { 自动常量 v = _mm_set_epi64x(

回答 1 投票 0

WS_EX_RTLREADING、shell 语言和 SetThreadUILanguage

我有一个由 CreateWindowExW() 使用 WC_LISTVIEWW 创建的 ListView。然后,我使用 LVCOLUMNW 创建列并通过 pszText 设置文本。文本为阿拉伯语。 我想要这个列表的栏目文本...

回答 1 投票 0

使用自定义比较器的 std::set::insert 问题

我编写了一个小结构,用于对容器/解决方案中的项目之间的依赖关系进行排序(它实际上可以用于对任何内容进行排序,所使用的接口只是一个 std::string )。 依赖项是

回答 1 投票 0

在通常的算术转换中,无符号整数和有符号整数运算的结果在不同的编译器上是不同的

#包括 #包括 #包括 int main() { 断言(typeid(1L + 1U) == typeid(long)); std::cout << typeid(1L + 1U).name(); } I use the b...

回答 1 投票 0

编写一个程序来输入数组中的元素,然后打印数组中所有唯一的元素。输入数组元素:1 1 2 2 3,,我想找到不重复的num

我需要简单的C++答案 就像我使用的代码一样,它会打印重复的数字 #包括 使用命名空间 std; int main() { int arr[5], arr2[5], i = 0, j = 0; 算了...

回答 1 投票 0

为什么添加“noexcept”关键字会损害函数性能?

编辑:我不太关心我自己的例子。我可以理解为什么您想要一个可重现的示例,因为您可能不相信添加 noexcept

回答 1 投票 0

禁用函数或代码块的编译器优化?

我想禁用单个函数或代码块的编译器优化。 我在 Visual Studio 2019 环境中。 我尝试如下: __forceinline 无效 InsertJunkCode() { #pragma 优化("&qu...

回答 1 投票 0

为什么在函数指针中使用显式对象参数会出现语法错误?

因此,在我正在开发的项目中,当我尝试对函数指针使用显式对象参数时,我遇到了问题。 乍一看,代码在语法上似乎很好,但因为这是一个新功能...

回答 1 投票 0

使用 /std:c++latest 时,Intellisense 显示标准库中的错误,但项目编译正常

我正在使用 VS2022 Community 构建一个软件,该软件在其 CMakeLists.txt 中标记为使用 C++23 或 /std:c++latest。 该软件构建良好,但“错误列表”平移......

回答 1 投票 0

Unicode 程序,但链接器需要 WinMain 而不是 wWinMain

我正在尝试将我的一个旧 C++ 程序从 ANSI 转换为 Unicode。我正在使用 Visual Studio 2022。在我对源代码进行所有更改后,我的程序编译时没有错误,但事实并非如此

回答 1 投票 0

暂停更新后,Visual Studio 安装程序中的“删除”选项有何作用?

我正常运行的 Visual Studio 2022 面临非常严重的问题。我按下了“更新”按钮,由于互联网连接问题,我按下了“暂停”按钮...

回答 1 投票 0

内置布尔到可见性转换器无法编译

我正在尝试使用自动 IReference 到可见性转换将可见性绑定到 ToggleButton::IsChecked 我正在尝试使用自动 IReference 到可见性转换将可见性绑定到 ToggleButton::IsChecked <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <CheckBox x:Name="myButton" Content="Click Me" /> <TextBlock Text="Hello" Visibility="{x:Bind myButton.IsChecked, Mode=OneWay}"/> </StackPanel> 在空白项目中这是可行的。在我现有的项目中,如果我提供自己的转换器,它就会工作,但如果我尝试使用自动转换,我会得到: error C3779: 'winrt::impl::consume_Windows_Foundation_IReference< winrt::Windows::Foundation::IReference<bool>,T>::Value': a function that returns 'auto' cannot be used before it is defined with [ T=bool ] (compiling source file Generated Files\XamlTypeInfo.g.cpp) 如果针对 c++17 进行编译,错误就会消失。我正在为 c++20 编译 https://github.com/microsoft/microsoft-ui-xaml/issues/9214

回答 1 投票 0

使 MSVC 针对特定微架构进行优化

使用 GCC/Clang/ICC/etc 我可以使用 -march=skylake 等生成针对特定微架构优化的代码,以及 -march=native 生成针对本地计算机优化的代码。 我该怎么办...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.