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 ++中,尤其是在实时系统中,不需要处理异常,并且如果系统将崩溃,通常的做法是让它崩溃。每次崩溃都是程序员错误,必须解决。因此,无需在发行版中处理异常。
使用说明noexcept符可以显着减少二进制文件的大小并提高性能。这样,stl具有的函数中的每个函数(noexcept如果有)将调用noexcept重载。但是该说明符的使用是限制性的,并且有很多限制(继承,虚拟函数签名,兼容性)。如果您在没有适当集成的情况下修改源代码,则会出现类似的错误looser throw specifier for...。
没有异常标志(如g ++ -fno-exceptions)仅替换所有标志throw,abort并可能减小某些堆栈大小。
在有noexcept必要升级旧版代码(在c ++ 11之前),提高性能并减小二进制文件大小的情况下,是否有任何良好的做法如何使用说明符或标志?现在,我只能看到一种方法-添加noexcept到每个函数。
编译器(arm-none-eabi-g ++,C ++编译器MSVC),c ++ 14
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”问题?
我有很多小于 64 kb 的文件,我需要使用下面的代码来转换它们。
这是 QT 中的工作代码QRegExp。
我尝试用MSVC重写它,regex_replace但遇到了工作速度非常慢的问题。
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)
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)