簡體   English   中英

如何在Oct文件中使用C ++ 17功能

[英]How to use C++17 features in an Oct file

我正在嘗試在GNU Octave的Oct文件中使用std::optional (C ++ 17功能)。 我已經升級到g ++版本9.1.0,並將linux環境vars“ CC”和“ CXX”分別設置為/usr/bin/gcc/usr/bin/g++ 在Octave中對這些變量運行getenv表示已設置正確的編譯器。 但是,當運行`mkoctfile'時,出現以下錯誤:

oct_interface.cpp: In function ‘octave_value_list Fmibc(const octave_value_list&, int)’:
oct_interface.cpp:863:10: error: ‘optional’ is not a member of ‘std’
  863 |     std::optional<double> dub_opt = {};
      |          ^~~~~~~~
oct_interface.cpp:863:10: note: ‘std::optional’ is only available from C++17 onwards
oct_interface.cpp:863:19: error: expected primary-expression before ‘double’
  863 |     std::optional<double> dub_opt = {};
      |                   ^~~~~~
warning: mkoctfile: building exited with failure status

如注釋中指出的那樣,必須將適當的標志傳遞給編譯器才能使用C ++ 17功能。 因此,一個更精確的問題可能是如何配置mkoctfile以將-std=c++17標志傳遞給編譯器。

問題是,正如Human-Compiler的注釋中指出的那樣,C ++ 17標志沒有傳遞給編譯器。 可以通過兩種方式傳遞編譯器標志:作為對Oct-file實用程序的調用的一部分,即mkoctfile -std=c++17 ,或者通過設置Octave環境變量,即setenv("CXXFLAGS", "-std=c++17")

暫無
暫無

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

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