0

記号 '%' で始まる行は出力ファイルにそのまま渡される必要がありますが、そのような行にいくつかの CPP マクロが含まれている場合、それらのマクロも同様に展開されます。

ソース (test.x):

#ifdef ONE
#warning "ONE is defined"
#else
#warning "NO ONE!!!!!1111"
#endif

%
% hello, ONE
%

rpcgen の実行:

# rpcgen test.x -DONE
test.x:2:2: warning: #warning "ONE is defined" [-Wcpp]
test.x:2:2: warning: #warning "ONE is defined" [-Wcpp]
test.x:2:2: warning: #warning "ONE is defined" [-Wcpp]
test.x:2:2: warning: #warning "ONE is defined" [-Wcpp]

結果 (test.h):

/*
 * Please do not edit this file.
 * It was generated using rpcgen.
 */

#ifndef _TEST_H_RPCGEN
#define _TEST_H_RPCGEN

#include <rpc/rpc.h>


#ifdef __cplusplus
extern "C" {
#endif


 hello, 1


#ifdef __cplusplus
}
#endif

#endif /* !_TEST_H_RPCGEN */

したがって、「ONE」は「1」に置き換えられますが、そのままにしておくことが望ましいです (結果の test.h で「#ifdef ONE」を検討してください)。

それを回避する方法はありますか?

4

1 に答える 1

0

したがって、CPPラッパーを使用した回避策があります:

  1. somedir/cpp <- 問題のあるマクロを定義解除するラップ。例えば:

    #!/ビン/sh

    exec /usr/bin/cpp -U_LP64

  2. rpcgen -Y somedir として rpcgen を実行します。

于 2012-12-12T12:21:14.070 に答える