マクロを作成しようとしているので、まだ関数が実装されていないことを指定できます(呼び出されたときにプログラムがクラッシュする)。ここに私が思い付いたものです:機能は実装されていないマクロですか?
#define NIMPL crash(__PRETTY_FUNCTION__ " not implemented yet")
そして、あなたがそうのようにそれを使用したい:しかし
void myFunction() {
NIMPL;
}
、この使用法は、このエラーが発生します。
../feta/include/feta.h:19:41: error: expected ‘)’ before string constant
#define NIMPL crash(__PRETTY_FUNCTION__ " not implemented yet")
^
crash()
は関数であること1つの文字列をパラメータとして受け取り、メッセージを出力し、exit(1)
を呼び出します。
__PRETTY_FUNCTION__
単独でも、連結がうまく機能しないことが確認できます。また、__PRETTY_FUNCTION__
を使用せずに2つの文字列を連結すると、正常に動作します。"<stuff>""<other stuff>"
。しかし、同時に両方を行うことは機能しません。
私はstringizing operatorを使ってみましたが、(GCCに存在する場合でも)うまくいきませんでした。
Cの場合、 '__Punc'_FUNCTION__とは異なり、' __func__'を使うこともできます。 '__PRETTY_FUNCTION__'はC++の' __func__'とは異なります。 (これはあなたの問題を解決しません) –
2つの文字列の間には##がありません。 – pm100
@ pm100: '__PRETTY_FUNCTION__'はマクロではなく' char [] 'オブジェクトの名前として扱われるので、' ## 'は役に立たない。 –