使用-std=c++14和-std=c++17衝突問題
有程式碼如下:
1 #include <iostream> 2 #include <string_view> 3 4 using namespace std; 5 6 int main() 7 { 8 std::string_view term_shared_view; 9 return 0; 10 }View Code
直接使用g++編譯時:
user@devbox:~$ /toolchain/bin/x86_64-linux-gnu-g++ main.cpp
main.cpp: In function ‘int main()
’:main.cpp:9:7: error: ‘string_view’ is not a member of ‘std’
std::string_view term_shared_view;
^~~~~~~~~~~
main.cpp:9:7: note: ‘std::string_view’ is only available from C++17 onwards
user@devbox:~$
使用g++ -std=c++17編譯時,順利通過:
user@devbox:~$ /toolchain/bin/x86_64-linux-gnu-g++
-std=c++17main.cppuser@devbox:~$
使用g++ -std=c++17 -std=c++14編譯時,編譯失敗,-std=c++17不生效:
user@devbox:~$ /toolchain/bin/x86_64-linux-gnu-g++-std=c++17 -std=c++14main.cpp
main.cpp:In function ‘int main()’:
main.cpp:9:7:error:‘string_view’ is not a member of ‘std’
std::string_view
term_shared_view;^~~~~~~~~~~
main.cpp:9:7:note:‘std::string_view’ is only available from C++17 onwards
user@devbox:~$