【问题标题】:Incorrectly phrased IF Statement from C++ SDK来自 C++ SDK 的 IF 语句措辞不正确
【发布时间】:2021-06-26 01:23:49
【问题描述】:

我一直在使用由另一个人创建并在 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.");
} 

【问题讨论】:

标签: c++ api if-statement sdk


【解决方案1】:

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

它使用std::getenv() 的调用结果声明和初始化e 变量,然后测试e 是否非零。由于getenv() 返回一个char*,所以eauto 类型被推导出为char*,因此检查e 是否为非零意味着检查它是否不是nullptr

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

{
   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.");
   } 
}

【讨论】:

    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多