C言語での質問です。

system()を使いたいんですがlinux上では"./"がいりますがwin上では"./"がいらないので
どう対応させたらいいのかで困っています。

一番素直なのは

#ifdef WINDOWS
sprintf(ss, "main.exe");
#elif defined UNIX
sprintf("ss, "./main.exe");
#endif
system(ss);

なんですが#ifdef, #endifをいちいち入力するのは面倒です。
なにかいい方法はありませんか?

すいません別件でもう一つあります。

system()をつかってあるプログラムを実行したいんですが、
そのときにバイナリデータを渡したいと思っています。

その方法として、ファイルにfwrite()でバイナリを一気に書いておいて
引数としてファイル名を渡そうかとも思ったんですが
main関数にバイナリデータを渡す方法はありませんか?
ファイルを通過させるとどうしてもIO時間がかかるのであまり使いたくありません。
渡したいデータは256バイト×2と決まっています。