1
m4マクロに問題があります。マクロはm4はローカル変数を解析しません
define(BARRIER, `
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&$1,$2,$3);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&$1,$2,$3);
#endif
')
で、私の.Cファイルに私はGlobal->start
とP
は、グローバルとローカル変数MyNumある
BARRIER(Global->start, P, MyNum)
を持っています。
しかし、私は、出力ファイルに
m4 macrosfile.m4 sourcefile > outputfile
を実行するときに、このあります:私のマクロ、または単に制限と間違っ
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&Global->start,P,);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&Global->start,P,);
何か?
ありがとうございます。
BARRIER(Global->start, P, MyNum)
をする:あなたが変更してみてください可能性が
Cのプリプロセッサとして 'm4'?私の知る限りでは、Cにはビルドプリプロセッサはありません - ) –
@JensGustedtはい私はそれを知っていますが、この方法では異なるプログラム - プロジェクトで同じマクロを再利用できます。また、私はそのようにしなければなりません。 – Manos
バッククォートはコードに現われないので、バッククォート/アポストロフィの引用は実際には良い選択です。その結果、変更を加えずにm4を使用してソースコードを翻訳することがよくあります。 (もちろん、別の引用符が必要な場合は、m4で可能です。) –