私の生産コードのモックアップ:
/* version 1 */
#include <stdio.h>
FILE** fout = &stdout;
int main() {
fprintf( *fout, "hello\n" );
}
gcc では問題なく動作しますが、mingw ではコンパイルに失敗すると報告されています (単項 '&' オペランドとして左辺値が必要です)。
私は見たことがあります ; という事は承知しています
/* version 2 */
#include <stdio.h>
int main() {
FILE* fout = stdout;
fprintf( fout, "hello\n" );
}
完全に有効です。ただし、グローバル変数を事前設定する必要があります。不運にも、
/* version 3 */
#include <stdio.h>
FILE* fout = stdout;
int main() {
fprintf( fout, "hello\n" );
}
バージョン 1 の置き換えには適していません。gcc でさえコンパイルされません (2 行目: 初期化要素は定数ではありません)。
main() が開始する前に初期化される変数に stdout を取得する方法はありますか?