記号 '%' で始まる行は出力ファイルにそのまま渡される必要がありますが、そのような行にいくつかの 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」を検討してください)。
それを回避する方法はありますか?