C2146和C4430错误:循环引用错误
今天編譯程序的時(shí)候發(fā)生了C2146和C4430錯(cuò)誤:
1>e:/rt21/src/dbms/db_warn_server/db_warn.h(30) : error C2146: 語(yǔ)法錯(cuò)誤 : 缺少“;”(在標(biāo)識(shí)符“alm_msg111”的前面)
1>e:/rt21/src/dbms/db_warn_server/db_warn.h(30) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認(rèn) int
1>e:/rt21/src/dbms/db_warn_server/db_warn.h(30) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認(rèn) int
?
在網(wǎng)上找到了原因和解決方法:
如果存在兩個(gè)類的頭文件a.h和b.h,在a.h中有這樣的語(yǔ)句:#include "b.h",在b.h文件中有這樣的語(yǔ)句:#include "a.h"???且在一個(gè)類中有另一個(gè)類的對(duì)象時(shí)???那么就會(huì)出現(xiàn)這樣的錯(cuò)誤:
error C2146: syntax error : missing ';' before identifier '使用的對(duì)象名'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
解決的辦法就是不要讓有這樣的關(guān)系的頭文件形成環(huán)形的引用? 在不需要的類中去掉那個(gè)不需要的類的頭文件的引用即可。
?
檢查發(fā)現(xiàn)原來是我試圖用一個(gè)大的頭文件db_warn_define.h包含所有需要的引用文件,不小心也包含了自己工程內(nèi)的頭文件db_warn.h;同時(shí)我在db_warn.h中又調(diào)用了db_warn_define.h,改掉以后就好了。由此構(gòu)成了循環(huán)引用。記下來備查。
?
總結(jié)
以上是生活随笔為你收集整理的C2146和C4430错误:循环引用错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QMetaObject::connect
- 下一篇: TOP用法