constexpr和之间有什么区别const?
在我看来,拥有"总是返回5的功能"正在破坏或淡化"调用函数"的含义.必须有一个原因,或者需要这种能力,或者它不会出现在C++ 11中.为什么会这样?
// preprocessor.
#define MEANING_OF_LIFE 42
// constants:
const int MeaningOfLife = 42;
// constexpr-function:
constexpr int MeaningOfLife () { return 42; }
Run Code Online (Sandbox Code Playgroud)
在我看来,如果我编写了一个返回字面值的函数,并且我进行了代码审查,有人会告诉我,我应该声明一个常量值而不是写回返5.
我应该参考lambda以避免复制吗?
这段代码会复制lambda吗:
auto myLambda = []() {/* do stuff */ }
Run Code Online (Sandbox Code Playgroud)
如果是的话,我应该这样写吗:
auto &myLambda = []() {/* do stuff */ }
Run Code Online (Sandbox Code Playgroud)
PS:很抱歉,有人用谷歌搜索了一个可能是新手的问题,但没有找到答案。
作为使用 React Native 的移动开发人员,我需要使用创建和加密文件的 C++ 代码。我对 C++ 没有太多经验(我上次写一些东西已经是 15 年前在大学时的事了)。
如果我错了,请纠正我。
这让我很烦恼。这是文件的类型定义:
typedef struct File
{
uint8_t FileName[64];
uint8_t userName[64];
}File;
Run Code Online (Sandbox Code Playgroud)
为什么要使用类型uint8_t来存储字符串而不是std::string?
后来,事情变得更加扑朔迷离。我们需要将所有字符一一解析出来,并写入到临时文件中。
#define FILE_NAME_LEN 64
CustomFile CFile::getCustomFileFromFile(tFile f_File)
{
CustomFile returnValue;
for(int i = 0;i<FILE_NAME_LEN;i++){
returnValue.FileName[i] = f_File.FileName[i];
}
for(int i = 0;i<FILE_NAME_LEN;i++){
returnValue.user_name[i] = f_File.user_name[i];
}
return returnValue;
}
bool WriteEncryptFile(QString fpath,tFile *p_tFile)
{
// Convert the tFile object to a CustomFile object
CustomFile customFile = CFile::getCustomFileFromFile(*p_tFile);
}
Run Code Online (Sandbox Code Playgroud) 我总是习惯#define在 cpp 文件开头的某个地方定义幻数。我想把它改成const数字。(全局变量在 cpp 文件中声明/定义。)这是个好主意吗?我应该将它们放入匿名命名空间吗?我从不#include在任何地方使用 cpp 文件。