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