小编Smi*_*ken的帖子

将 void* 转换为 char*

在 C++ 中将 void* 转换为 char* 的最佳/最安全方法是什么?

static_cast 还是 reinterpret_cast?

void I2C::Read(void* buffer, DWORD address, UINT size) 
{
    if (_isDeviceAvailable)
    {
        _iicInstance.seekg(address, std::ios_base::beg);
        _iicInstance.read(reinterpret_cast<char *>(buffer), size);
        Gpio::SVSet();
    }
Run Code Online (Sandbox Code Playgroud)

}

c++ casting char void

4
推荐指数
1
解决办法
8308
查看次数

使用noexcept和关闭异常的编译器标志

介绍

在嵌入式c ++中,尤其是在实时系统中,不需要处理异常,并且如果系统将崩溃,通常的做法是让它崩溃。每次崩溃都是程序员错误,必须解决。因此,无需在发行版中处理异常。

问题

使用说明noexcept符可以显着减少二进制文件的大小并提高性能。这样,stl具有的函数中的每个函数(noexcept如果有)将调用noexcept重载。但是该说明符的使用是限制性的,并且有很多限制(继承,虚拟函数签名,兼容性)。如果您在没有适当集成的情况下修改源代码,则会出现类似的错误looser throw specifier for...

没有异常标志(如g ++ -fno-exceptions)仅替换所有标志throwabort并可能减小某些堆栈大小。

在有noexcept必要升级旧版代码(在c ++ 11之前),提高性能并减小二进制文件大小的情况下,是否有任何良好的做法如何使用说明符或标志?现在,我只能看到一种方法-添加noexcept到每个函数。

编译器(arm-none-eabi-g ++,C ++编译器MSVC),c ++ 14

c++

2
推荐指数
1
解决办法
578
查看次数

CreateFileMapping 错误代码 8

CreateFileMapping 错误代码 8. 没有足够的存储空间来处理此命令。我试图在 64 位 Win10 Visual C++ 上创建 4 Gb (0xFFFFFFFF) 的文件映射。

#define UBS_MEM_SIZE 0xffffffff

HANDLE hMapObject = CreateFileMapping(INVALID_HANDLE_VALUE, nullptr,           
PAGE_READWRITE, HIWORD(UBS_MEM_SIZE), LOWORD(UBS_MEM_SIZE),     
TEXT("dllmemfilemap"));
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个“错误 8”问题?

c++ memory winapi file-mapping

1
推荐指数
1
解决办法
1293
查看次数

正则表达式运行速度非常慢

我有很多小于 64 kb 的文件,我需要使用下面的代码来转换它们。

这是 QT 中的工作代码QRegExp

我尝试用MSVC重写它,regex_replace但遇到了工作速度非常慢的问题。

QT:

temp.replace(QRegExp("[ ]{0,}(=)[ ]{0,}"), QString("="));
temp.replace(QRegExp("[ ]{0,}(==)[ ]{0,}"), QString("=="));
temp.replace(QRegExp("[ ]{0,}(>)[ ]{0,}"), QString(">"));
temp.replace(QRegExp("[ ]{0,}(<)[ ]{0,}"), QString("<"));
temp.replace(QRegExp("[ ]{0,}(\\&\\&)[ ]{0,}"), QString("&&"));
temp.replace(QRegExp("[ ]{0,}(\\|\\|)[ ]{0,}"), QString("||"));
temp.replace(QRegExp("[ ]{0,}(\\})[ ]{0,}"), QString("}"));
temp.replace(QRegExp("[ ]{0,}(\\{)[ ]{0,}"), QString("{"));
Run Code Online (Sandbox Code Playgroud)

微软VC:

temp = regex_replace(temp, std::regex("[ ]{0,}(=)[ ]{0,}"), "=");
temp = regex_replace(temp, std::regex("[ ]{0,}(==)[ ]{0,}"), "==");
temp = regex_replace(temp, std::regex("[ ]{0,}(>)[ ]{0,}"), ">");
temp = regex_replace(temp, std::regex("[ ]{0,}(<)[ ]{0,}"),"<" );
temp = regex_replace(temp, std::regex("[ ]{0,}(\\&\\&)[ ]{0,}"),"&&" …
Run Code Online (Sandbox Code Playgroud)

c++ regex qt visual-studio-2015

1
推荐指数
1
解决办法
1561
查看次数

标签 统计

c++ ×4

casting ×1

char ×1

file-mapping ×1

memory ×1

qt ×1

regex ×1

visual-studio-2015 ×1

void ×1

winapi ×1