いくつかのレガシーCコードをC++に変換しています。エラーC2660:関数がX引数を取らない
ヘッダ・ファイルは、マクロP私の場合USE_ANSI_PROTOTYPES
が定義されていないと評価において
#ifndef P
# ifdef __STDC__
# ifndef __HIGHC__
# define USE_ANSI_PROTOTYPES
# endif
# endif
# ifdef __sgi__
# define USE_ANSI_PROTOTYPES
# endif
# ifdef USE_ANSI_PROTOTYPES
# define P(s) s
# else
# define P(s)()
# endif
#endif
を含有します。
別のヘッダーファイルは、関数宣言でマクロPを使用します。 'long2str':
extern void long2str P((unsigned char *str,int pos,long clong));
関数は、関数が
エラーC2660と呼ばれているライン上
long2str(tmp_str, 0, seg_used(seg)); // <= error on this line
しかしVS2012フラグエラーのようなコード内の特定の場所で呼び出される関数3つの引数を取らない
違う?
'extern void long2str()(unsigned char * str、int pos、long clong)); 'どのように使用していますか? –
@πάνταῥε 'あなたは' extern void long2str() 'に展開されないのでしょうか? – tkausl
@tkauslはい、あなたは正しいです。 'extern void long2str P(???)(unsigned char * str、int pos、long clong)のように使うべきです);' –