0

我一直在使用由另一个人创建并在 GitHub 上发布的用于 Alpaca Markets 的 SDK。这段代码包含一个 IF 语句,对我来说它的格式似乎不正确,但我对 C++ 有点陌生。贴在下面

if 语句似乎实际上并未检查任何布尔值。包含此语句时,代码也将无法编译。我找到的解决方案是将其注释掉并在 config.cpp 文件中设置变量。

这仅仅是一个错误吗?

if (auto e = std::getenv(api_key_id_env_var_.c_str())){
  api_key_id_ = std::str(e);
} else {
  return Status(1, api_key_id_env_var_ + " is not set.");
} 
4

1 回答 1

0

if 语句似乎实际上并未检查任何布尔值。

e使用调用的结果声明和初始化变量,std::getenv()然后测试是否e为非零。由于getenv()返回 a char*,因此推断出的auto类型为,因此检查是否为非零意味着检查它是否不是。echar*enullptr

该代码只是执行此操作的简写:

{
   char* e = std::getenv(api_key_id_env_var_.c_str());
   if (e != nullptr){
      api_key_id_ = std::str(e);
   } else {
      return Status(1, api_key_id_env_var_ + " is not set.");
   } 
}
于 2021-06-26T01:44:55.107 回答