使用linux編譯調試,今天嘗試編譯發現如下錯誤:
__BEGIN_DECLS does not name a type
第一個錯誤位置爲系統的string.h的這個位置:
#if defined __cplusplus && __GNUC_PREREQ (4, 4)
讓人困惑,於是在stackoverflow搜尋半天,知道了出現的原因:json中自帶的有個feature.h文件,與系統的feature.h衝突。在makefile中包含了此文件所在的文件夾時,程序調用這個feature.h編譯,於是出現這樣的錯誤。
json的頭文件不能不包含,而包含了又衝突,如何解決呢?最後看到別人用了這個方法:
原先的:-Ijsoncpp/include/json/
改爲:-Ijsoncpp/include
而在json的源文件中,修改包含路徑,改爲“json/json.h"。
這樣至少可以解決衝突問題了。