アカウント名:
パスワード:
もっというとVisual C++上のC言語しか扱えないC++プログラマもいますよね。そういう人は往々にしてswprintf(libc)とwsprintf(Windows API)の違いを理解していないです。
ライブラリ関数がどこに入っているかという意味ではswprintfとsprintf、openとfopenのどっちでもいいです。それにwsprintfに対応するのは_stprintfですよ?openとfopenは引数が違うから論外…いまどきK&Rじゃあるまいしコンパイラが指摘します。
wsprintfをあげたのはlibcとWindows APIの違いがわかっていない、OSのバージョンによって差異があり得る、それを理解していないということはどのヘッダファイルに宣言されているのかわかっていない、そしてコメントされているように関数の機能を理解していない(%fをサポートしない)。なのでwsprintfをUNIXでも使おうとしたりするわけですよ。UNIXでは用意されておらず使えないことを経験し、その理由を理解していればいいのですが、そういう経験のないVisual C++専門の人が一定数いるだろう、というコメントです。
どうもまだC言語の環境が整わない状態のWindows開発部隊が、アセンブラで文字列整形のコードを毎回書くのがあまりに面倒だから、APIにしてしまった、という噂を聞いたんですがどうなんでしょうね。
結局UNIXと同じように安定してリンクできるlibc相当がOS側にも欲しい、ってことでしょう。ちなみにlibcのswprintf、user32.dllのwsprintfよりも下層にもう1つswprintfがあります(ntdll.dll)。どんだけ~
サブシステム無のNTネイティブで使うもので非公開ではない使っていけないのならオフラインデフラグを持つソフト、ブートタイムに動くパーティショニングソフトは違反している事になる
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stay hungry, Stay foolish. -- Steven Paul Jobs
「私は C++ プログラマです」の中身に踏み込めない (スコア:2, 興味深い)
という職業プログラマがまとまった数として存在するんじゃないだろうか。そういう人は、
集計するときに C なのか C++ なのか不明確だから、区別しない方が面倒が少ない、とか。
Re: (スコア:3, すばらしい洞察)
もっというとVisual C++上のC言語しか扱えないC++プログラマもいますよね。
そういう人は往々にしてswprintf(libc)とwsprintf(Windows API)の違いを理解していないです。
Re: (スコア:0)
違いを明白に意識してなくて、wsprintfで%fと書いてしくじるのは過去にやりました。
何でこんな関数があるんだろう、と思ったら、
どうもまだC言語の環境が整わない状態のWindows開発部隊が、
アセンブラで文字列整形のコードを毎回書くのがあまりに面倒だから、
APIにしてしまった、という噂を聞いたんですがどうなんでしょうね。
Re:「私は C++ プログラマです」の中身に踏み込めない (スコア:2)
ライブラリ関数がどこに入っているかという意味ではswprintfとsprintf、openとfopenのどっちでもいいです。それにwsprintfに対応するのは_stprintfですよ?
openとfopenは引数が違うから論外…いまどきK&Rじゃあるまいしコンパイラが指摘します。
wsprintfをあげたのはlibcとWindows APIの違いがわかっていない、OSのバージョンによって差異があり得る、それを理解していないということはどのヘッダファイルに宣言されているのかわかっていない、そしてコメントされているように関数の機能を理解していない(%fをサポートしない)。
なのでwsprintfをUNIXでも使おうとしたりするわけですよ。UNIXでは用意されておらず使えないことを経験し、その理由を理解していればいいのですが、そういう経験のないVisual C++専門の人が一定数いるだろう、というコメントです。
結局UNIXと同じように安定してリンクできるlibc相当がOS側にも欲しい、ってことでしょう。ちなみにlibcのswprintf、user32.dllのwsprintfよりも下層にもう1つswprintfがあります(ntdll.dll)。どんだけ~
Re: (スコア:0)
基本的にOSのモジュールが使うためのもので、一般プロセスから使うのは邪道です。
Windowsでは、C標準ライブラリのDLLは、OSの一部ではないのです。
Windowsにバンドルされプリインストールさているものは、VC++で書かれたアプリのためのランタイムライブラリ、でしかありません。
ですから、VC++のランタイムライブラリをアップデートしても、OSの挙動は変りません。
Re: (スコア:0)
サブシステム無のNTネイティブで使うもので非公開ではない
使っていけないのならオフラインデフラグを持つソフト、ブートタイムに動くパーティショニングソフトは違反している事になる