我彙編關於AIX6.1使用g ++ 4.6.1代碼和收到這個錯誤編譯: -錯誤:命名構造函數,而不是類型。同時用克++ 4.6.1
ViaChecks.h:14:3: error: 'BuPolygonEX<AllPass<CornerT<NetAndVal<ZVal3> > > >::IOPS::Base {aka BuPolygonCore<bu_polygon_clean_func, no_derivatives, AllPass<CornerT<NetAndVal<ZVal3> > > >::IOPS}::IOPS' names the constructor, not the type
的結構被定義爲:
struct ViaSquareCheck : BuPolygonEX<AllPass<CornerT<NetAndVal<ZVal3> > > > {
typedef BuPolygonEX<AllPass<CornerT<NetAndVal<ZVal3> > > > Base;
DEFINE_ENGINE_PROPERTIES_INHERIT(Base::IOPS, void update() { Base::update(); i().xregion_1nm_oversize(x0nm); o().xregion_1nm_oversize(x0nm); o().derivatives(x_dom); o().bu_polygonized(yes); }); // via_square_dim property is added inside
membert(int, amount, -1, ViaSquareCheck);
ViaSquareCheck();
ViaSquareCheck* output(DFC* dfc) { return set_output(0,dfc); } // single output returns good vias
ViaSquareCheck* set_output(int k, DFC* dfc);
void option(const string& pname, const string& pval); // some options change engine properties
private:
BadViaMultiplexer<C>* mux;
GIM2a<APC> bad_via_gim;
GIM2a<APC> good_via_gim;
member(bool, linked, false);
member(bool, ok_45, false);
void link();
member(ViaSquareCheckNetProcess*, np,NULL);
};
DEFINE_ENGINE_PROPERTIES_INHERIT的
定義: -
#define DEFINE_ENGINE_PROPERTIES_INHERIT(SSSS, extras...) \
struct IOPS : SSSS { \
EnginePropertiesVector& i() { return SSSS::i(); }; \
EnginePropertiesVector& o() { return SSSS::o(); }; \
EngineProperties& i(int n) { return SSSS::i(n); }; \
EngineProperties& o(int n) { return SSSS::o(n); }; \
typedef SSSS Base; \
extras; } ep_;
感謝。
¤我覺得,但給出了早些時候遇到的800和900行C函數,我不確定,這肯定是我見過的最醜陋的代碼。哎喲。無論如何,寫'T :: T'而不是'T'是獲得這個錯誤的一種方法。也許這發生在邪惡的宏觀中。我所做的只是*谷歌的錯誤消息*。乾杯&hth。, –
什麼是DEFINE_ENGINE_PROPERTIES_INHERIT()宏?粘貼它的身體。 – iammilind
@傻瓜或巨魔投票結束爲「不是真正的問題」和「不可能回答」:當你意識到你不明白它時,**正確的**反應是要求,或者至少讓其他人更多的消息靈通的人有一個去。你的反應可能只是一個反社會的自我主義的反應。或者很可能這是一個愚蠢的,這就是我所假設的。 –