簡體   English   中英

使用花括號在 C++ 中初始化變量時出現意外結果

[英]Unexpected result when initializing variable in C++ using curly braces

我正在使用 atom 練習 C++ (我很新)。 我剛剛學會了初始化變量,如下所示:

#include <iostream>

using namespace std;

int main() {

  int myInt {};
  
  return 0;
}

當我在 codelite 中構建和運行以前的代碼時,我沒有收到任何錯誤。 但是,如果我使用我的 MacBook 終端 (zsh) 編譯我的 atom 文件 dailyPractice10.cpp,我會收到以下錯誤:

dailyPractice10.cpp:7:12: error: expected ';' at end of declaration
int myInt {};
        ^
        ;
1 error generated.

我正在使用以下命令在終端上編譯它:

g++ -o dailyPractice10 dailyPractice10.cpp(編譯)

./dailyPractice10(運行程序)

有沒有人有任何反饋,為什么這段代碼在 codelite 中運行但不在終端中編譯?

因為這個特性是從 c++11 添加的。

如果您想嘗試以下命令。它將起作用。

$ g++ -std=c++0x -o dailyPractice10 dailyPractice10.cpp

解決此問題的關鍵是在構建代碼時設置 C++11(或更高版本)標准。 在IDE的console選項卡中,報錯前生成如下output。 請注意,在構建代碼時沒有定義標准:

 make all Building file: ../1.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"1.d" -MT"1.o" -o "1.o" "../1.cpp"

我們需要在 g++ 命令中添加--std=c++1x標志。 以下解決方案適用於使用 Eclipse IDE 和 MacOSX C++ 編譯器的解決方案:

  1. 右鍵單擊“項目資源管理器”中的項目。
  2. Go 到屬性 > C/C++ 構建 > 設置。
  3. 在“工具設置”選項卡下,找到“GCC C++ 編譯器”>“雜項”

在“其他標志”文本框中,編輯文本,使其如下所示:

-std=c++17 -c -fmessage-length=0

如果您打算使用任何其他 c++ 標准,請將“c++17”替換為您選擇的標准(例如 c++20)。

應用更改。 運行 Clean,然后再次構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM