ロギング関連関数に依存するロギング構造は次のようになります。
typedef struct
{
TFkt_vlogf vlogf;
TFkt_outf outf;
void* logData;
} TLogger;
このロギング関数には、ロガーが持つジョブに応じて異なるポインターが割り当てられた抽象 logData があります。
Filelogger はある時点で、このように保存されたファイルハンドルにアクセスします。
FILE * fileHandle = (FILE *)(logger->logData);
これはコンパイルされますが、SPLint はこれに不満を持っており、次のメッセージで不平を言っています。
基礎となる抽象型へのキャストFILE *
:(FILE *)(logger->logData)
SPLint を満たすにはどうすればよいですか?
- 周りに散らかそうとしまし
/*@abstract@*/
たが、助けにはなりませんでした
C90 でデータを格納およびアクセスしながら、実装とは関係なく型を渡すための構造シグネチャを維持するより良い方法はありますか?