2つの異なるコンパイラで実行しているプログラムがあり、各コンパイラには異なるファイル処理ライブラリがあります。たとえば、ライブラリでは次のものが必要です。
fwrite(buffer,size,elements,file)
もう1つは:
f_write(file,buffer,size,elements)
とにかく、コンパイラ間でシームレスに移行できるステートメント#define
内のメインヘッダーファイルでグローバルを使用できますか?#ifdef
2つの異なるコンパイラで実行しているプログラムがあり、各コンパイラには異なるファイル処理ライブラリがあります。たとえば、ライブラリでは次のものが必要です。
fwrite(buffer,size,elements,file)
もう1つは:
f_write(file,buffer,size,elements)
とにかく、コンパイラ間でシームレスに移行できるステートメント#define
内のメインヘッダーファイルでグローバルを使用できますか?#ifdef
もちろん:
#ifdef STUPID_COMPILER
# define fwrite(ptr, size, nitems, stream) f_write(stream, ptr, size, nitems)
#endif
次にfwrite()
、コードで使用するだけです。ラッパー関数は必要ありません。f_write()
それを必要とするコンパイラ/ライブラリを使用している場合、プリプロセッサはそれを呼び出しに変換します。
新しい関数を作成できます。
size_t my_fwrite(...)
{
#ifdef REAL_FWRITE
return fwrite(buffer,size,elements,file);
#elif F_WRITE
return f_write(file,buffer,size,elements);
#else
#error "No fwrite"
#endif
}
どのような実装が提供されていませんが、提供されていfwrite
ますf_write
か?