あなたはマクロでこれを行う場合は、それが大きすぎると厄介になります。
マクロの代わりに、インライン関数でこれを行うことができます。これは、より多くのC++の方法ですが、それはあまりにもCに大きな動作します:
inline const char *macro1(const char *name, int const number, const char *date, char *buffer, size_t const buffer_size){
// copy everything into the buffer, probably with sprintf()
return buffer;
}
をCの場合には、私はまた、機能を提案するように定義される:
static inline const char *macro1(const char *name, int const number, const char *date, char *buffer, size_t buffer_size);
が、これは常にではコンパイルされません。 C++。
更新:5gon12ederが述べたように
、それはGCC 6.2.1と打ち鳴らす3.8.1でコンパイルを行います。あなたはそれを印刷したり、ファイルに入れて、連結していないために、文字列を使用する予定が、ちょうど行った場合、最後に
namespace{
inline const char *macro1(const char *name, int const number, const char *date, char *buffer, size_t buffer_size);
}
:匿名名前空間を使用することができますC++のために代わりのstatic
それはこの関数内にあります。
"DEF" とは何ですか? – Nick
これはCやC++ではありません。タグはあなたの質問を見つける手助けとなるので、実際のコードと適切なタグ付けを使用してください。 – unwind
「編集:」とは何ですか? –