eclipse :報錯 ‘XXXX‘ does not name a type的解決辦法
針對這個錯誤,我的具體報錯為’constexpr’ does not name a type,但是我改成const就不會出現這個錯誤了,為了找到根本的原因開始蒐集資料。
原因一:對於不同的C++版本的問題:
constexpr是C++11開始提出的關鍵字,其意義與14版本有一些區別。
C++11中的constexpr指定的函式返回值和引數必須要保證是字面值,而且必須有且只有一行return程式碼,這給函式的設計者帶來了更多的限制,比如通常只能通過return 三目運算子+遞迴來計算返回的字面值。
而C++14中只要保證返回值和引數是字面值就行了,函式體中可以加入更多的語句,方便了更靈活的計算。
const與constexpr 的區別是什麼呢?
const並不能代表“常量”,它僅僅是對變數的一個修飾,告訴編譯器這個變數只能被初始化,且不能被直接修改(實際上可以通過堆疊溢位等方式修改)。而這個變數的值,可以在執行時也可以在編譯時指定。
constexpr可以用來修飾變數、函式、建構函式。一旦以上任何元素被constexpr修飾,那麼等於說是告訴編譯器 “請大膽地將我看成編譯時就能得出常量值的表示式去優化我”。
下面具體分析一下發現可能與C++的版本有關係,後面檢視了eclipse的屬性配置 發現確實需要更改配置:
具體如下:
主要還是因為下面的C++的版本沒有配置導致的原因,按照下面的配置完成即可,在後面新增上下面的配置std=c++11:
現在在執行就不會報錯誤了。
原因二:標頭檔案重複呼叫的情況
但是在C++編譯時,也有可能存在這種錯誤的另一種原因可能性,那就是重複呼叫的情況:
具體參考
前置宣告與C++標頭檔案互相包含導致的error: ‘xxx’ does not name a type問題(感謝博主分享)
相關文章
- `QtValidLicenseForCoreModule' does not name a type 錯誤的解決QTREM
- Qt 報錯 “類名”does not name a typeQT
- 兩個C++編譯錯誤及解決辦法--does not name a type和field `XX' has incomplete typeC++編譯
- ‘map’ does not name a type
- vector does not name a type
- error :does not name a typeError
- error: '[class name]' does not name a typeError
- Qt 標頭檔案互相包含會報錯'' does not name a typeQT
- error: 'cout' does not name a type|Error
- 關於Chrome報錯 ERR_NAME_NOT_RESOLVED 解決辦法Chrome
- does not name a type 的可能性
- 編譯錯誤 --- does not name a type和field `XX' has incomplete type編譯
- ndk編譯錯誤:error: 'override' does not name a type編譯ErrorIDE
- Eclipse除錯找不到源的解決辦法Eclipse除錯
- error: ‘xxx’ does not name a typeError
- error: ‘變數名‘ does not name a type|Error變數
- 'int32_t' does not name a type
- 編譯錯誤--------:XX does not name a type和field `XX' has incomplete type編譯
- git報錯400的解決辦法Git
- sysctl -P 報錯解決辦法
- Eclipse3.4之Copy Qualified Name複製類全名解決辦法Eclipse
- cnpm link 報錯解決辦法NPM
- pod install 和 rvm install ruby-xxxx報錯解決辦法
- 建庫時EM報錯的解決辦法
- QT中error: xxx does not name a type xxx錯誤QTError
- ImportError: cannot import name ‘imresize‘解決辦法ImportError
- Eclipse閃退解決辦法Eclipse
- Mybatis批量更新SQL報錯☞解決辦法MyBatisSQL
- 執行Docker命令報錯解決辦法Docker
- isNaN("abc")編譯報錯解決辦法NaN編譯
- 安裝ionic 報錯 安裝canvas報錯 解決辦法Canvas
- Access restriction: The type 'Resource' is not API 解決辦法RESTAPI
- oracle 10g emctl 報錯的解決辦法Oracle 10g
- According to TLD or attribute directive in tag file, attribute value does not accept any expressions報錯解決辦法Express
- Could not resolve host: 'localhost 報錯解決辦法localhost
- 安裝sysbench過程報錯,解決辦法
- IOConsole Updater 報錯解決辦法
- 解決eclipse的maven依賴報錯EclipseMaven