[英]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.