タグ

cに関するrudo108のブックマーク (8)

  • C言語で可変長引数をとる関数を、型安全に書く方法

    C言語の可変長引数は、型安全でない(まちがった型の引数を渡してもコンパイルエラーにならない)とされています。これは言語仕様の理解としては正しいのですが、特定の型の引数を任意の個数とる関数に限っては、マクロを使うことで型安全性を確保することができます。 任意の個数のdoubleを引数にとり、その和を返す関数「sumf」を例にあげて説明します。 C言語の可変長引数機構を使ってsumfを定義すると、以下のようになります。 #include <math.h> #include <stdarg.h> #include <stdio.h> static double sumf(double nfirst, ...) { double r = 0, n; va_list args; va_start(args, nfirst); for (n = nfirst; ! isnan(n); n = va_a

    rudo108
    rudo108 2014/12/14
  • Cプログラミング診断室

    はじめに 開院準備 昔むかし/ レベル差/ 教育/ ネットワーク/ 情報集め/ 隠すことについて/ プログラムコンテスト/ ドキュメント/ 楽するように/ 手抜きと下手の違い/ 開院 第1部 外来 第1章 普通の初心者 最初から充実した(!?)プログラムが登場 関数を短くし、コメントを改善する 上手になる秘訣/ プログラムの紹介/ 何だ、このプログラムは!!/ 短くするには/ コメントについて/ 無駄な努力をやめよう/ 名前/ 気になる個所/ 修正プログラム/ 課題/ まとめ 第2章 これでもプロ 売りものであるにもかかわらず、超きたない! 構造的な欠陥の指摘〜引数、ポインタの活用 プログラムの紹介/ 「超」基的問題点/ 関数分解/ 構造的欠陥/ 引数を使おう/ ポインタ/ その他/ まとめ(修正プログラム) 第3章 上司が問題 まさに驚異的なプログラムの見というべき 内容の修正から、

  • C言語より高速なJavaScriptによるバイナリ操作が話題

    JavaScriptなどのスクリプト言語は動作が遅く、最適なパフォーマンスを得るにはC/C++で実装しなければならないという常識に挑んだ先進的な講演が話題になっています。この話題の発端は2012年10月7日から10月8日までベルリンで開催されたJSConf.euでFelix Geisendörfer氏が行った講演です。 彼の講演の題材はnode.jsからMySQLに接続する為のバインディングのパフォーマンスに着目しています。2010年当時、node.jsにはMySQLのバインディングが存在しておらず、増井さん作のnode-mysqlモジュールが開発中の状態でした。このモジュールはJavaScriptでバイナリを解析しておりJavaScriptのみで開発されていました。この状況を受けてFelix氏が新たにnode-mysqlモジュールを新規に開発を始めました。このモジュールもJavaScri

    C言語より高速なJavaScriptによるバイナリ操作が話題
  • EffectiveC++入門 ~ 第4章 クラスと関数:その設計と宣言 ~

    ■ 課題 クラスインターフェースとは、そのクラスを使うプログラマがアクセスできるインターフェースのこと。インターフェースは、特に理由がない限り関数となる。大きなインターフェースは以下のような問題を抱える。 ・ 関数の数が多ければ多いほど、クライアントにとっては理解し難いものになる。 ・ 保守が難しくなる。重複コードの保守、インターフェースの一貫性の維持、ドキュメント化が大変になる。 ・ 大きなインターフェースは、ヘッダファイルが長くなり、コンパイル時間に大きな影響を与える。 ■ 解決 クラスインターフェースはできる完全かつ最小限になるまで、よく設計を吟味する。 ■ 補足 私見だが、この当たり前のようなことをできるプログラマは残念ながら、かなり少ない。 #include <iostream> using namespace std; class Rational { public: __Ra

    rudo108
    rudo108 2011/08/08
    スライシングとは
  • INHERITANCE

    OOPへの道 世間のプログラマのみなさんは、OOPを学ぶ際、 どんな経路で勉強されているんでしょうね? ま、今時はJavaから入る人が多いのでしょうけど、 私がOOPに触れた頃は、まだ「これからはC++だ!!」という時代で、 でもオブジェクト指向自体の解説書はSmalltalk使ってたりして、 C++の方はといえば、著者からして、 こいつクラスとインスタンスの区別が付いてないんじゃないの? というレベルのが溢れてたりしました。 んで、しょうがないのでSmalltalkをベースにしたなんか読んでると、 「オブジェクト指向プログラミングでは、 オブジェクトが相互にメッセージを受け渡して、 協調動作しながらプログラムが実行される」 なんてことが書いてあったりして、 ふむふむ。オブジェクトが相互にメッセージを受け渡しすることにより プログラムが実行される、ということは、 オブジェクト指向では

    rudo108
    rudo108 2011/08/08
    C言語でオブジェクト指向を無理やり実現。
  • タダで始めるC/C++ プログラミング for Windows

    1. はじめに Windows で C 言語や C++ 言語でのプログラムを作成するには以下のものが必要になります。 C/C++ コンパイラ C/C++ のコードを記述したソースファイルから実行ファイルを生成する C/C++ コンパイラ (とリンカ) が必須です。 統合開発環境 (IDE) C/C++ コンパイラとエディタさえあればプログラム開発はできますが,それだけではコマンドプロンプト (DOS 窓) でコマンドやオプションを入力しなければならず面倒です。ボタンを押すだけでコンパイルなどができる開発環境があると便利です。 テキストエディタ 統合開発環境にはソースをキーワードで色分け表示してくれるエディタが内蔵されているので必須というわけではありません。しかし,ちょっとソースファイルを見たい,とか,他人のソースを見ながらプログラミングしたい,などと言う場合にはテキストエディタを使うと便利

    rudo108
    rudo108 2011/08/08
    minGWを使わないといけないのか。。。
  • C 言語によるオブジェクト記述法 COOL

    C 言語によるオブジェクト記述法 COOL ver.2 C-language's Object Oriented Language ver.2 [検索] 目次 0. はじめに 1. クラスの記述, 属性の記述 2. 操作の記述 3. クラス属性の記述、定数の記述 4. 初期化操作と後始末操作の記述 4-1.処理効率優先インターフェイス 4-2.再コンパイル不要インターフェイス 4-3.動的バインディング・インターフェイス 5. 状態取得操作と状態設定操作とイベントハンドラの記述 6. 集約の記述、継承の記述 6-1.集約の記述 6-2.継承の記述 6-3.多重継承の記述 6-4.重複継承の記述 6-5.動的継承の記述 7. 多態性(多相性)、インターフェイス継承の記述 7-1.多態性の記述 7-2.多態性を持った生成の記述 7-3.多重継承の多態性の記述 7-4.重複継承の多態性の記述 7

    rudo108
    rudo108 2011/08/08
    C言語のみでオブジェクト指向を実現する。かんなり大変。
  • Cプログラミング専門課程

    書は、プログラミング言語Cを、他の解説書とはまったく違う切口で説明 したである。全ては実践あるのみ。紙上の空論を排し、あくまで実際的な実 験のやりかたを示しながら、C言語の質に迫ろうとした。 最近の言語の書が、できるだけメモリを意識させないようにしているが、 書ではメモリを明示的に意識させることを通して、C言語を解説している。そ れにより、C言語で難しいとされるポインタなどを具体的に示した。 実験は、スタックを破壊するような実験もわざと行なっている。初心者が犯 す誤りを実際に実験し、メモリ内容がどう変化して行くかを細かく追いかけ、 誤りの理由をきちんと示すことに専念した。 今回の公開では、書のもっとも重要な部分、『第4章メモリ』を順次誰で も見られるようにして行く。乞う御期待! 1996年6月3日 公開テキスト はじめに 第0章 準備 第4章 メモリ 正誤表 はじめに 謝辞 第0

  • 1