パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

CとC++は似たようなモノか?」記事へのコメント

  • 本質的に C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラである、
    という職業プログラマがまとまった数として存在するんじゃないだろうか。そういう人は、
    集計するときに C なのか C++ なのか不明確だから、区別しない方が面倒が少ない、とか。
    • Re: (スコア:3, すばらしい洞察)

      もっというとVisual C++上のC言語しか扱えないC++プログラマもいますよね。
      そういう人は往々にしてswprintf(libc)とwsprintf(Windows API)の違いを理解していないです。

      • by Anonymous Coward
        ここで比較するならswprintfでなくてsprintfですよね。

        違いを明白に意識してなくて、wsprintfで%fと書いてしくじるのは過去にやりました。
        何でこんな関数があるんだろう、と思ったら、
        どうもまだC言語の環境が整わない状態の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)。どんだけ~

          親コメント
          • by Anonymous Coward
            ntdll.dllのものは非公開ですから使ってはいけません。
            基本的にOSのモジュールが使うためのもので、一般プロセスから使うのは邪道です。

            Windowsでは、C標準ライブラリのDLLは、OSの一部ではないのです。
            Windowsにバンドルされプリインストールさているものは、VC++で書かれたアプリのためのランタイムライブラリ、でしかありません。
            ですから、VC++のランタイムライブラリをアップデートしても、OSの挙動は変りません。
            • by Anonymous Coward

              サブシステム無のNTネイティブで使うもので非公開ではない
              使っていけないのならオフラインデフラグを持つソフト、ブートタイムに動くパーティショニングソフトは違反している事になる

Stay hungry, Stay foolish. -- Steven Paul Jobs

処理中...