2016-02-18 20 views
5

WindowsのC++コードをLinuxで動かすと、この関数 "vsprintf_s"が出てきました。それはMicrosoft固有の機能なので、Linuxに置き換えがあるかどうか尋ねたいと思いますか? ありがとうLinuxでMS vsprintf_sを置き換えますか?

+3

[TR 24731の安全な機能を使用していますか?](https://stackoverflow.com/questions/372980/do-you-use-the-tr-24731-safe-functions)を参照してください。 '* _s()'関数は、マイクロソフト以外のライブラリから直接入手することはできません。例えば、LinuxやMac OS Xでは利用できません。いいえ、直接利用することはできません。あなたは 'vsnprintf()'でかなり近づくことができますが、呼び出しシーケンスには違いがあります(複数の相違点)。 –

+1

[this](http://stackoverflow.com/questions/4785381/replacement-for-ms-vscprintf-on-macos-linux)を参照してください。 – Martin

+0

@Martinはvsprintf_sとは異なる_vscprintf関数の問題を解決します –

答えて

3

のように見えるvsnprintf()はlinux.die.netによると適切な置き換えになります。

+3

それは近いですが、オーバーフロー処理の振る舞いは全く異なります。 'vsprintf_s'は、オーバーフローしようとしたときにプログラムを中止します。 'vsnprintf'は出力を切り捨てて実行します。 – user4581301

関連する問題