我正在使用QT Creator在Ubuntu上創建一個C++程序。我編寫的程序編譯得很好,直到我決定開始使用C++ 11而不是C++ 98(這是QT Creator中的默認設置)。我用我自己的cmake的文件,而不是qmake的,所以要做到這一點,我包括在我CMakeLists.txt file
以下行:從C++ 98升級到C++ 11會導致錯誤
set(CMAKE_CXX_FLAGS "-std=c++0x")
現在,我的代碼部分具有以下(這不是我寫的):
#if (linux && (i386 || __x86_64__))
# include "Linux-x86/OniPlatformLinux-x86.h"
#elif (linux && __arm__)
# include "Linux-Arm/OniPlatformLinux-Arm.h"
#else
# error Unsupported Platform!
#endif
轉移到C++ 11後,我在線路error Unsupported Platform!
得到一個錯誤。這是因爲,從我所看到的變量linux
沒有在任何地方定義,雖然定義了變量__x86_64__
。
因此,我有兩個問題:
1)爲什麼變量linux
沒有定義,即使我使用Linux呢?
2)如何告訴C++ 11忽略這個錯誤?
謝謝。
你試過只使用不添加''__arm__' linux'? – 2015-03-13 12:12:32
這不起作用,因爲'linux'在任何地方都沒有定義。我也嘗試用'unix'替換'linux',但那還沒有定義。 – Karnivaurus 2015-03-13 12:14:58
是'set(CMAKE_CXX_FLAGS「-std = C++ 0x」)'唯一的改變嗎?除非你依賴非標準行爲,否則大多數C++ 98代碼應該在C++ 11中編譯得很好。 – NathanOliver 2015-03-13 12:15:48