我有一個庫是抽象的,基本上是這樣的:通過在C抽象庫++
啊
namespace N {
class A
}
了Bh
#pragma once
#ifndef B
#define B
#include "A.h"
namespace N {
class B: Public A
}
#endif
中,庫中CMakelists引用。 txt like this:
global_add_library(libN A.cpp B.cpp)
target_link_libraries(libN someLibraries)
現在我有main
文件看起來像這樣:
#include <libN/A.h>
#include <libN/B.h>
N::A a* = new A();
N::B b* = new B();
而且它CMakelists.txt
看起來是這樣的:
global_add_exectubale(application somemainccpfiles.cpp)
target_link_libraries(application libN)
什麼,我得到的是一個錯誤說
error: ISO C++ forbids deceleration of 'B' with no type.
所以我我以爲Bh文件沒有正確包含?但爲什麼當A
的減速度恰好?
任何想法?
編輯:所以我發現原來的問題是什麼,pragma once
和ifndef
的組合意味着它沒有正確編譯。當它被修復後,我刪除了雜注。但現在的問題是爲什麼呢?它們不應該在兩者都起作用嗎?
鑑於這一切都不是真實的代碼,這是很難說...... –
@OliCharlesworth你是怎麼知道的: 0,但是,是的,我不能發佈我的真實代碼,導致我的工作的一部分,並有IP限制。但是我對包含內容沒有做任何明顯的錯誤? –
預處理過程中可能出現錯誤嗎?也許包括衛兵的問題? – goji