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

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

  • 本質的に C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラである、
    という職業プログラマがまとまった数として存在するんじゃないだろうか。そういう人は、
    集計するときに C なのか C++ なのか不明確だから、区別しない方が面倒が少ない、とか。
    • もっというとVisual C++上のC言語しか扱えないC++プログラマもいますよね。
      そういう人は往々にしてswprintf(libc)とwsprintf(Windows API)の違いを理解していないです。

      親コメント
      • それはまぁよくあることで,
        UNIX上でプログラムを書いてる人でも
        open と fopen の違いが分かってなかったり・・・

        #今はいるんですって,ホントに

        --
        屍体メモ [windy.cx]
        親コメント
      • by Anonymous Coward

        単にC言語といっても環境や時代でかなり違いがありすぎるので
        それに比べるとC++との差なんて些細な話だと思う

        • by Anonymous Coward

          某業務用でANSI非準拠、なんてのもあるしねぇ…
          はぁ…

      • 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ネイティブで使うもので非公開ではない
              使っていけないのならオフラインデフラグを持つソフト、ブートタイムに動くパーティショニングソフトは違反している事になる

    • C++コンパイラの多くがCをコンパイルできるからじゃないでしょうか?

      むしろアセンブリ言語を一緒くたにされるほうが困ったりして。
      親コメント
    • > C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラ

      その人が書いているプログラムはC/C++どちらなのでしょうか?
      通常想定される作業環境は「C/C++を切り替えて使えるコンパイラ」ですので、
      プログラマは必ず「どちらで書いているか」を意識していると思うのですが。

      過去に一度だけ、C++の現場で、Cしか書けないプログラマが何人かいて、
      その方々にはメソッドの中身を埋める仕事だけやってもらったことも
      ありますが、そういう人が「まとまった数」いるというのは考えたくない...
      # 普通ならC++からライブラリ切り出してCで書いてもらうとかやるとか、
      # テスターとかの支援作業側に回ってもらうとかするんだけどね...

      親コメント
    • > 本質的に C のスキルしか持っていないけれど、作業環境がたまたま C++ コンパイラである、
      > という職業プログラマがまとまった数として存在するんじゃないだろうか。

      今時は純粋なCコンパイラはほとんど無いので、C言語オンリーの現場でもC++コンパイラを使います。
      なので「まとまった数」ではなくて「ほとんど」になります。
      とはいえ、そういう環境にいる人たちはCを使っていると明確に認識しておりますが。

      # もっとも普段はDOS時代の純粋なCコンパイラで作業してます。もちろん16ビット版。

      親コメント
      • by Anonymous Coward

        組み込みの世界ではC++が使える方がまれです。

    • ローカル変数の宣言位置が自由になったのもC++からでしたっけ?

      # 私がまさに「作業環境がたまたま C++ コンパイラ」な人だけどID
      --
      # yes, fly. no, fry.
      親コメント

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

処理中...