タグ

関連タグで絞り込む (205)

タグの絞り込みを解除

Cに関するkiyo_hikoのブックマーク (123)

  • 再入不可能な関数を C で実装する - いやなブログ

    再入不可能な関数を C で実装する 一度実行したら二度と中身を実行できなくなる再入不可能な関数を C で実装してみます。通常、このような関数はシングルトンなどの静的なデータの初期化に使いますが、ここではデータについては考えないことにします。 static 変数をフラグに使う まずは最も単純な方法から見ていきます。次の関数は static 変数をフラグに使って再入を防いでいます。厳密に言えば関数そのものには入ってしまっていますが、ここで気にしないことにします。 void once(void) { static int entered; // 最初は 0 if (entered == 1) { // すでに入ったことがある場合は return; // すぐ出る } entered = 1; // 初回の場合のみ、何かを実行する } この方法はシングルスレッドのプログラムではうまく動きますが、マ

    kiyo_hiko
    kiyo_hiko 2012/03/13
    static変数ではマルチスレッドでは破綻するとの話
  • やさしいCプログラミング

    ■予告編 ひょんなことから 「やさしいCプログラミング」というのを見つけた。 とにかく面白いCのソースが並んでいた。やさしいというより、面白いというか、 恐ろしいというか、その手のCのソースのオンパレードである。是非、御一読を。 ----まえがきより という表現があり、これはになっているのかと指が震えながら検索したら、 出版物として出ていることが判明した。そして、好運にもこのを入手することが できたのである。 もう、とても素晴らし過ぎて、 『Cプログラミング診断室』 第8章 を上回る秀作であることが判明した。 このをネタに、1章書き上げることはできるであろうが、著作物にまでなっ ているソースプログラムを引用するのは難しいのではないかと思う。 まだ、ぱらぱらと見ただけである。これから、じっくり、皆で飲み屋に行って、 このを肴に一杯やらないと、これ以上の感想は書けそうにない。 2000

    kiyo_hiko
    kiyo_hiko 2012/03/08
    「#include "pseudo.h"...FUNCTION Main() VARIABLE INT n, INT...」…やべえこれほしい
  • Yohta's Object World ~YOHTAのオブジェクト指向研究 デザインパターン・UML などなど~

    Yohta's Object World Study of Design Pattern Mastering Unified Modeling Language. Study of Design Pattern デザインパターンの骸骨たち (RE-BONE ) with C デザインパターンにC言語版を追加! (2009.2.28) デザインパターンの塗り薬 Sample Application for GOF's Design Pattern COMMANDを追加!(2004.5.29) jjtree(JavaCC)で、Visitorパターンをマスター 第八回修正 (2011.12.29) Special Issue C++ビギナーに捧ぐ EffectiveC++入門 フレッシュマン特集(2005.03.16) AMIGO FOR Win32 (Win32プログラミングのお助けクラス達)

  • https://home.jeita.or.jp/is/committee/software/101008/materials/haruna.pdf

    kiyo_hiko
    kiyo_hiko 2012/03/01
    組み込みアーキテクチャーについての現場へのアンケート。C? 抽象度の高いアーキテクチャーを自負してるところが多い割には変更に滅茶苦茶弱いみたいなんだが、組み込みってそういう世界なのかね?←よくわからん
  • 3Dゲーム制作 - プログラマ専用SNS ミクプラ

    DXライブラリを今まで使ってきましたが、3Dゲームを作る上ではダイレクトXを新たに習得したほうが良いでしょうか? DXライブラリやEasy3Dでは、C言語で3Dゲームを組むことが可能です。 ただし、DXライブラリはシェーダ対応していないので、モデルの描画レベルがPS1程度です(ポリゴン数は多いですが)。 Easy3Dは、もっと複雑なことが出来ます。 http://www5d.biglobe.ne.jp/~ochikko/ [追記] 最初に3Dをやるとカメラを動かしたり、キャラを地面に立たせて歩かせるだけでむちゃくちゃ苦労すると思います。 なので、基礎的なことから徹底的にやるにはDXライブラリを選ぶのは悪いことではありません。 ただ、3D関係の情報はDirectXが多いんですよね。 DirectXやSELENEなどのライブラリを使うならC++がほぼ必須です。 DirectXだけならC言語の

    kiyo_hiko
    kiyo_hiko 2012/02/21
    DXライブラリーとかAIMSとかの便利そうだけどそのうち / まずDirectXという、古から伝わる技術を知っときたい
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 条件演算子 - Wikipedia

    条件演算子(じょうけんえんざんし、英: conditional operator)は、プログラミング言語の演算子で、条件文と同様な意味があるが、文ではなく値を持つ式になる。評価されると、条件式の値により異なる式が評価され、異なる値になる。 なお、C言語やC++など一部のプログラミング言語において、条件演算子とは後述する「? :」(ハテナマークとコロン) の演算子の名称である。 「If 〜 Then 〜 Else 〜」にあたる三項演算子があり、ほぼ唯一の、プログラミング言語において一般的な三項演算子である。また「If 〜 Then 〜 if」にあたる二項演算子もある。 三項演算子は、条件式・真式・偽式の3つのオペランドを結ぶ。二項演算子の場合は、条件式と、真式または偽式のいずれかの、2つのオペランドを結ぶ。 条件文との違いは、 真式・偽式は式(条件文における節のように文を置くことができない)

    kiyo_hiko
    kiyo_hiko 2012/02/15
    「CやJavaやPerlなどでは、a ? b : c ? d : e は a ? b : (c ? d : e) という意味だが、PHPの三項演算子では (a ? b : c) ? d : e なので注意が必要である」…なぬ。自分は条件演算子をcondやCASE代わりに多用するので、これは気を付けないと
  • int型配列の一括初期化

    現在、ある配列をfor()でループさせて初期化させていますが、もっと高速に初期化できる方法はないでしょうか? //配列の初期化 int Xi[256]; for(i = 0; i < 256; i++){ Xi[i] = 0; } 今後、配列数を増やす予定なので高速に初期化できるものはないか探しています。 速度重視でよろしくお願いします。

    int型配列の一括初期化
    kiyo_hiko
    kiyo_hiko 2012/02/10
    int xs[256] = {0}; // no calloc
  • sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)

    はじめに 今回はsizeofオペレータをとりあげます。sizeofは、引数に与えたオブジェクトや型名から、その型のデータがメモリ上に占めるバイト数を求めるオペレータです。皆さんも、メモリ領域を動的に確保したいときや文字列操作などに関連して使ったことがあるでしょう。まずはsizeofオペレータの使用上の注意について説明し、その後でsizeofオペレータの誤用例を2つ紹介します。 sizeofオペレータ使用上の注意 「sizeofオペレータの使用上の注意 その1」は、プログラマが意図する正しい引数を渡すこと、です。メモリ上のオブジェクトのコピーや移動などの操作は、オブジェクトのメモリ上のサイズにもとづいて行います。オブジェクトのサイズを間違っていたら、アクセス違反やオーバフローといった脆弱性につながることは容易に想像できるでしょう。 「sizeofオペレータの使用上の注意 その2」は、引数に副

    sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)
    kiyo_hiko
    kiyo_hiko 2012/02/07
    「引数に副作用を持つような式を渡さないこと」…例えばsizeof(a++)はだめという話
  • Amazon.co.jp: C/C++ セキュアコーディング: 本: Robert C. Seacord,JPCERTコーディネーションセンター

    Amazon.co.jp: C/C++ セキュアコーディング: 本: Robert C. Seacord,JPCERTコーディネーションセンター
  • MSN Japan - ニュース, 天気, メール (Outlook, Hotmail), Bing検索, Skype

    kiyo_hiko
    kiyo_hiko 2012/02/01
    これは確かにC/CPPをまじめに始めてからちょっと疑問だった。static変数も参照可能なスコープが限定されるという意味でローカル変数であるから、自動変数はローカル変数の部分集合である、とのこと。なるほど。
  • VB.NET/VB6.0/CLR/C/C++/Win32API 型一覧表 - 山崎はるかのメモ

    型名 ビット幅 バイト長 VB.NET VB6.0 CLR仕様 末尾文字 変換関数 C/C++/Win32型 値範囲 (最小値~最大値)

    kiyo_hiko
    kiyo_hiko 2012/01/29
    ATOMとかDWORDって何と思ってたら、ATOMは短整数、DWORDは符号なし整数だった
  • プログラミングの禁じ手Web版 C言語編 - NULLに関するパターン(サルベージ版) - Akio's Log

    C Magazineの「プログラミングの禁じ手Web版 C言語編」を、InternetArchiveからサルベージしました。 プログラミングの禁じ手Web版 C言語編 - NULLに関するパターン http://web.archive.org/web/20070104215659/www.cmagazine.jp/src/kinjite/c/null.html インデックスはこちら プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio’s Log (PR)プログラミング作法 (PR)C言語ポインタ完全制覇 (標準プログラマーズライブラリ) (PR)改訂新版 Cプログラミング診断室 ここから転載です。 NULLとゼロを間違える 深刻度: ★★(中程度) [症状] 具体的な被害は表面化しにくいが,プログラムの保守や改造の段階で「あれ?」となるパ

    プログラミングの禁じ手Web版 C言語編 - NULLに関するパターン(サルベージ版) - Akio's Log
    kiyo_hiko
    kiyo_hiko 2012/01/29
    2つめが最初わからなかったが、初期値のないstaticなポインターはNULLに初期化されるとのこと http://oshiete.goo.ne.jp/qa/754355.html
  • 静的変数(static変数)の初期化 - ソフトウェアエンジニア現役続行

    C言語では、自動変数は明示的に初期化をしないと、その自動変数の値は未定義です。なので自動変数には明示的に初期化をする必要があります。 一方、静的変数(static変数)は明示的に初期化をしないと、0(数値型)またはNULL(ポインタ型)に初期化されます。 int i; /* 何が入っているか分からない */ static int j; /* 0が入っている */ ただし、単一の変数の宣言だったら、たとえ0で初期化されているとはいえ、 static int j; よりも static int j = 0; と明示的に書いた方が可読性が高くて良いでしょう。 しかし、配列を扱うときなどは、このように明示的に表すのが難しく、初期値を省略するのが一般的です。 例えば以下のように char *p[15]; /* 各要素はNULLで初期化されている */ なぜなら、明示的に表そうとすると、 char *

    静的変数(static変数)の初期化 - ソフトウェアエンジニア現役続行
    kiyo_hiko
    kiyo_hiko 2012/01/29
    自動変数は明示的に記述しないと初期化されず、static変数の場合は暗黙的に0またはNULLに初期化される 覚えとこう
  • Success is a Journey, not a Destination: 全てのCプログラマが未定義な振る舞いについて知っておくべきこと #1/3

    [What Every C Programmer Should Know About Undefined Behavior #1/3 の翻訳です。] LLVMでコンパイルしたコードは、最適化を有効にしているとたまにSIGTRAPシグナルを生成するのはなぜなのか、と聞かれることがある。いろいろ調べたあと、(X86での話だが) Clangは "ud2" インストラクションを生成していたことがわかった。"ud2" は__builtin_trap()が生成するインストラクションと同じものだ。[訳注: #UD例外を発生させる命令。ソフトウェアが#UD例外をハンドルできているかテストするために使われる。つまり、ソースコードが未定義な振る舞いを使っていたから、LLVMはud2インストラクションを生成したのであって、LLVMのバグではない、ということ] こういう問題は幾つかあって、すべて、Cの未定義な振る

    kiyo_hiko
    kiyo_hiko 2012/01/29
    こんなにいろいろ罠があるのか C++erな人よくわかるなあ
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    kiyo_hiko
    kiyo_hiko 2012/01/26
    Perl5.10でstate変数なるものが導入されていて、これはCのstatic変数よろしくスコープを抜けても記憶されているらしい。知らなかった。5.10使うことがあればバンバン活用していきてえ
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

    kiyo_hiko
    kiyo_hiko 2012/01/18
    本は現在進行中
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • Amazon.co.jp: 詳解 圧縮処理プログラミング: 昌達慶仁: 本

    Amazon.co.jp: 詳解 圧縮処理プログラミング: 昌達慶仁: 本
  • スクリプト言語による効率的ゲーム開発 新訂版 | SBクリエイティブ

    国内外問わず、プロのゲーム開発現場で必須ツールとなっているスクリプト言語。いかに効率よく実装とテストを行うか。いかに拡張性を高めるか。ゲーム業界定番スクリプト言語LuaとC/C++の効果的連携を徹底解説、プロのゲームプログラミング手法を伝授します。 多くのゲーム開発者に支持された『スクリプト言語による効率的ゲーム開発』が、「ゲープロ」シリーズとしてリニューアル! シンプルな例から実践的応用、陥りやすい「罠」まで、ゲーム開発現場の定番スクリプト言語LuaとC/C++の効果的連携を解説します。 【目次】 第1章 ゲームの開発速度は十分ですか? 第2章 ゲーム開発をスピードアップする 第3章 スクリプト言語の選択 第4章 スクリプト言語Lua 第5章 LuaをC/C++プログラムに組み込む 第6章 プログラムを止めない開発環境を作る 第7章 ゲームシステムを作る 第8章 「ゴチャキャラ」ゲーム

    スクリプト言語による効率的ゲーム開発 新訂版 | SBクリエイティブ