2011-08-08 63 views
3

所以我有這樣的代碼:C++宏可以將一些代碼添加到C++文件的末尾嗎?

// puma.cpp 
#include "FILE_WITH_MACROS.hpp" 
ANIMAL_MACROS_NAME_HERE class puma : public animal { 
public: 
    puma(int age) : animal(age) {} 
    virtual std::string get_name() { 
    return "puma"; 
    } 
}; 
//end of puma.cpp and here we want to add some more code via ANIMAL_MACROS_NAME_HERE macros. 

可以將我的宏,我在我的C++文件中使用一些代碼添加到我的文件的結尾?

+0

您最終想要添加的宏是什麼?也許有另一種方式來實現你想要的東西... – murrekatt

回答

1

不,但您可以隨時在文件末尾添加另一個宏。

在某些情況下,可能能夠做這樣的事情:

MY_CLASS_WITH_END_STUFF(puma, animal); 

這當然可以擴展:

#define MY_CLASS_WITH_END_STUFF(derived, parent) \ 
    ANIMAL_MACROS_NAME_HERE class derived : public parent \ 
    { \ 
    public: \ 
     ... \ 
    }; \ 
    // here you can add stuff now as part of the macro... 

,那麼你會與外部宏觀像這樣定義類取決於需求的各種方式。然而,在某些情況下它受到限制,例如你想要指定的類有所不同,並且不遵循可以放入宏的簡單約定。

+0

@我最喜歡在最後添加的宏:請參閱本文[post](http://stackoverflow.com/questions/6981860/is-it-可能到創造 - 例如-C-宏 - 也就是說,將-總結您的標準繼承)。你能提供如何使用代碼中的宏嗎? – Rella

1

編號宏在您的源文件中預處理器遇到它們時內聯展開。

2

除非我非常誤會,否則恐怕不是。 C宏在其功能上非常小。是否有任何特定的原因,您不能讓puma的聲明之前生成代碼

1

如果在課程名稱前只有ANIMAL_MACROS_NAME_HERE,則無法添加。您需要在文件底部添加另一個符號,以擴展您想要的額外代碼。

相關問題