C++ の iostream と C の stdio の同期が原因で実行時のパフォーマンスが低下する場合は、このオプションを使用してください。同期が必要なのは、同じプログラム内で iostream を使って cout に書き込み、stdio を使って stdout に書き込みを行う場合だけです。C++ 規格では同期が求められており、このため C++ コンパイラはデフォルトで同期を有効にします。ただし、しばしば、アプリケーションのパフォーマンスは同期なしの方が良くなることがあります。cout と stdout の一方にしか書き込みを行わない場合は、-sync_stdio=no オプションを使って同期を無効にすることができます。
-sync_stdio を指定しなかった場合は、-sync_stdio=yes が設定されます。
次の例を考えてみましょう。
#include <stdio.h> #include <iostream> int main() { std::cout << "Hello "; printf("beautiful "); std::cout << "world!"; printf("\n"); } |
同期が有効な場合は、1 行だけ出力されます。
Hello beautiful world! : |
同期なしの場合、出力が混乱します。
このオプションは、ライブラリではなく実行可能ファイルのリンクでのみ有効です。