2011-08-08 8 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しかない場合は追加できません。ファイルの一番下に、必要な余分なコードに展開される別のシンボルを追加する必要があります。

関連する問題