Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

cに関するtsukkeeのブックマーク (39)

  • max, min 関数の最適化と x86 の cmov 命令 - yuyarinの日記

    max 関数や min 関数は C 言語だと自分で書かないといけないので int max(int a, int b) { return a>b?a:b; } などと書いたりするのだが,比較を行っているので分岐が発生するから遅くなると思い,これって当に速いのかと思って調べてみた. 実験 以下の5つのコードを用意した.これらをそれぞれ max 関数の実装とした.検証用のコードは最後に載せる.PHP でランダムな2数値を作ったデータを 1,000,000 組用意し,入力データとして配列に読み込んだあと,ループで max 関数を実行した.このループの前後で gettimeofday で時間を測り,所要時間を算出した.それぞれの実装に対し所要時間の5回の平均をとって比較した.コードは gcc version 4.2.1 (Apple Inc. build 5664) でオプション無しでコンパイルし

    max, min 関数の最適化と x86 の cmov 命令 - yuyarinの日記
    tsukkee
    tsukkee 2010/12/04
  • 総合目次 - 苦しんで覚えるC言語

    苦Cの内容の転載などは自由ですが、苦Cからの引用であることを明記してください。 (どこかに「苦Cより」と書かれていればOKです。) 学校や会社などで生徒(新入社員)へのテキストとして使用することも自由です。 その際、内容を修正したり、印刷して配布するのも自由です。

    総合目次 - 苦しんで覚えるC言語
    tsukkee
    tsukkee 2010/12/04
  • http://www.programming-magic.com/20100916205128/

    tsukkee
    tsukkee 2010/09/23
    stdin, stdoutをfreopenする
  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

    tsukkee
    tsukkee 2010/08/09
  • 本の虫: 邪悪なC形式のキャストにしかできないこと

    注意:邪悪で汚らわしいC形式のキャストは、いやしくもC++プログラマたる者は、使うべからず C++では、玉虫色のC形式のキャストの機能を、三つに分割した。static_cast、reinterpret_cast、const_castである。しかし、この三種のキャストでは、C形式のキャストを完全に代替できないという声をよく聞く。曰く、「どうしても書けないキャストがある」と。 それはよく聞く話だが、では実際にどのようなキャストなのかということは、誰も審らかにしない。誰も知らないキャストであれば、特に使えなくても問題ないはずだ。ただし、「C形式のキャストならばできるキャストが、新しいキャストを組み合わせてもできない。どんなキャストかは知らないが、とにかくできないと聞いている。故に新しいキャストはクソだ」などという論調で、C++の改良されたキャストを使わぬC畑の外道がしゃしゃり出てくるのも困る。そ

    tsukkee
    tsukkee 2010/07/15
  • 宣伝:C/C++のための開発補助ツール、GCCSenseをリリースしました — ありえるえりあ

    Recent entries 宣伝:C/C++のための開発補助ツール、GCCSenseをリリースしました matsuyama 2010-04-15 宣伝:Rubyのための開発補助ツール、RSenseをリリースしました matsuyama 2010-03-21 Emacsは死んだ matsuyama 2010-02-22 WebアプリケーションをiPhoneに対応させるための技術メモ matsuyama 2009-10-13 tokyo-emacs#x02の個人的レポート matsuyama 2009-09-07 Recent comments Air Jordans Air Jordans 2010-12-28 replica louis vuitton Anonymous User 2010-12-22 Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.

  • C言語・C++言語用テスティングフレームワーク - Cutter

    最新リリース 2019-09-13にリリースされた1.2.7が最新です。 [ダウンロード] [変更点] Cutterとは Cutterは書きやすさ・デバッグのしやすさを重視したC言語・C++言語用のテスティングフレームワークです。メンテナンスしやすく、利用効果の高い単体テスト(ユニットテスト)の開発を支援します。 また、テストを苦痛ではなく、楽しいものにすることも重視しています。スクリーンショットはテスト結果の通知機能を利用している様子です。文字としてテストのパス・失敗を伝えるだけではなく、視覚的にも通知することで、テスト結果をわかりやすくします。わかりやすいので、頻繁にテストを実行したくなります。この機能はnotify-sendコマンド(Linuxや*BSDなどの場合)またはgrowlnotifyコマンド(macOSの場合)を利用します。 動作環境 CutterはDebian GNU/L

  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    tsukkee
    tsukkee 2009/11/14
  • 技術情報 | 株式会社きじねこ

    ここでは、当サイトに来られた方々に有益と思われるさまざまな技術情報を公開していきます。サイドメニューに、どのような技術情報を公開しているかのリストが表示されていますので、ご興味をもたれたページを是非ご覧ください。 技術情報に含まれる多くのページは、コメントを投稿できるようにしています。今後の改善のための参考とさせていただきますので、ご感想、ご意見、ご指摘などを残してくださると助かります。なお、当サイトに関わりない投稿、または不適切な表現が含まれる投稿に関しては、予告なく編集または削除させていただくことがございますので、あらかじめご了承ください。 当サイトに掲載しているソースコードは、ご自由に利用していただいてかまいません。ただし、何ら保証はありませんし、当サイト掲載ソースコードの使用および使用不可によって生じたいかなる損害に対しても、弊社は責任を負いかねます。すべて自己の責任においてご利用

  • C言語〜ゲームプログラミングの館〜

    ※ 更新履歴 ※ 2017/11/03 ・sp.8章追加 2017/10/11 ・配布しているプロジェクトをVisualStudio2017に更新(それにまつわる説明も更新) 2015/09/12 ・s.3章 Androidのようなボタンの作り方(C++) 追加 2013/09/02 ・VisualC++2012のプロジェクトを追加 2013/02/23 ・d3.5章追加 2013/02/20 ・d3.1章追加 ・d3.2章追加 ・d3.3章追加 ・d3.4章追加 2013/01/19 ・sp3章追加 ・sp4章追加 ・sp5章追加 ・sp6章追加 ・sp7章追加 2012/06/23 ・3.14章追加 2012/06/16 ・sp1節追加 ・sp2節追加 2012/02/11 ・d6節追加 2011/11/10 ・h11章追加 2011/10/31 ・s1章追加 ・s2章追加 2011/

    tsukkee
    tsukkee 2009/08/14
  • lonesock.net: SOIL

    Simple OpenGL Image Library Introduction: SOIL is a tiny C library used primarily for uploading textures into OpenGL. It is based on stb_image version 1.16, the public domain code from Sean Barrett (found here). I have extended it to load TGA and DDS files, and to perform common functions needed in loading OpenGL textures. SOIL can also be used to save and load images in a variety of formats (usef

    tsukkee
    tsukkee 2009/06/07
    画像をOpenGLのテクスチャとして読み込むためのライブラリ,便利そう
  • C言語の対話環境ccons - きりかノート 3冊め

    cfe-dev MLに流れていた「[ANN] ccons : an interactive console for C based on clang and LLVM」 http://lists.cs.uiuc.edu/pipermail/cfe-dev/2009-April/004960.html http://code.google.com/p/ccons/ http://fizzysoft.net/personal/ccons.pdf clang/LLVMを利用した、irbのようなC言語の対話環境"ccons"というプロジェクトの告知。名前は似てるけどsconsとはぜんぜん関係ない。 Cのインタプリタというのはこれまでにもあったけれど、clangのライブラリを使ってるのはたぶん初じゃないかな。さっきチェックアウトしたr165でtestディレクトリを除いたファイルの総行数が3,000程

    C言語の対話環境ccons - きりかノート 3冊め
    tsukkee
    tsukkee 2009/05/05
  • iPhone 開発に使える C99 仕様と gcc 拡張 - 2009-04-23 - Windchase

    iPhone アプリの開発には、コンパイラとして gcc 以外を使うことは基的にありません。 したがって、gcc に実装されている C99 仕様や gcc 拡張仕様を気がねすることなく利用することができます。 ここでは、便利な C99 仕様や gcc 拡張を紹介します。 配列の動的確保 (C99) 配列を定義するときに、動的にサイズを指定してメモリを確保することができます。 従来は、 int n = 100; char* buf = alloca(n); のように alloca を使っていたところを、 int n = 100; char buf[n]; と、言語仕様の範囲内で、より直観的に書けるようになりました。 case の範囲指定 (gcc 拡張) 従来、switch 〜 case で switch (n) { case 0: case 1: case 2: case 3: proc

    iPhone 開発に使える C99 仕様と gcc 拡張 - 2009-04-23 - Windchase
  • Adobe Alchemy登場、C/C++アプリをFlashで動作させる研究にLLVM技術採用 | エンタープライズ | マイコミジャーナル

    Adobe Alchemy 2008年7月、C言語で開発されたアプリケーションやPythonスクリプトがFlash Playerで動作するようになったという報告が複数のブログに掲載されていた。どうやらこの取り組みは一時的なものでも噂でもコンセプトプルーフでもなかったようだ。 Adobe LabsにAlchemyと呼ばれるプロジェクトが登場した。噂されていた内容がそのままプロジェクトになっている。 AlchemyはC/C++で開発されたコードをActionScript仮想マシン(AVM2)で動作するコードにコンパイルするための研究プロジェクトコード名。C/C++で開発された既存のライブラリをFlash PlayerやAdobe AIRで動作するWebアプリケーションから活用できるようにすることを目指している。Flash PlayerやAdobe AIRのポテンシャルを一気に向上させる可能性が

  • 無料サービスを使え! – 役立つ無料サービスのレビュー、まとめ、比較記事を紹介

    コンテンツへスキップ 無料で使える!HubSpotの顧客リストの活用法 無料のアンケート作成ツール 比較/まとめ 無料「Excel」 テンプレート 比較/まとめ 無料で使えるノートアプリ比較 (Evernote / OneNote / Google Keep) おすすめの無料Web会議システム5選 WebP Converter 徹底解説!初心者でも直ぐに使える HubSpot は、マーケティング、セールス、サービスのためのCRM(Continue reading 多くの人の声を聞くことで改善できることも多い 企業や団体など運営していContinue reading 就職・転職には必須となる履歴書・職務経歴書 これから就職活動をスタートContinue reading 便利なノートアプリで効率的な仕事をしよう いつの時代も仕事をしていてメContinue reading 近年、リモートワーク

  • ライブドアブログ|無料で豊富な機能が充実

    絵日記 グルメ ライフスタイル・暮らし ペット 旅行海外 日記 ニュース スポーツ ビジネス・経済 趣味・創作 音楽 書籍・雑誌 漫画・アニメ ゲーム 受験・学校 ヘルス・ビューティ IT・家電 学問・科学 まとめ

    ライブドアブログ|無料で豊富な機能が充実
  • C 言語 マクロ講座 初回: uyota 匠の一手

    C プリプロセッサは直接の C 言語の構文では無いが、とても大切な役割を果たす。ヘッダファイルの二重読み込みを防止するためから、定数の定義、そして関数の定義など広義に渡る。 C 言語も何回かの拡張を繰り返し、最初に出て来たときと比べると、ずいぶんと便利な機能が加わったが、他の高級言語と比べたら、とても簡潔な構文構成だ。C 言語を要約すると、「型を持った演算処理と番地を利用した処理の制御」と言っても過言では無いだろう。前者は int や double などと型を付けることにより、それぞれに適した演算処理をすることを指し、後者は関数呼び出しを指す。 他の言語でも操舵が、C 言語では特に、だらだらと長くコードを書き連ねるのでは無く、効率良く構造体や配列にまとめあげることにより、簡潔かつ効率的に動作するコードを書くことができる。 マクロ自体は、それこそ単純極まりない構文なのだが、これを正しくかつ有

  • FrontPage

    2019-03-28 Python/インスタンス生成 2018-01-02 Python/クロージャ Pythonを読む 2018-01-01 Python/メソッド呼び出し 2017-12-31 Python/build_class後編 2017-12-30 Python/読解対象とするPythonコードと解析方法 2017-12-24 Python/build_class前編(というよりPyTypeObject) 2017-12-07 Python/ビルトインがビルトインされるまで 2017-12-03 Python/C関数実行とPyObject 2017-10-22 Django/テンプレートシステムを読む(レンダリング) Djangoを読む 2017-10-21 Django/テンプレートシステムを読む(テンプレートのパース) 2017-09-24 Django/テンプレートシステ

    tsukkee
    tsukkee 2008/10/13
    コードリーディング,Ruby1.9とかRailsとかある
  • 難読化手法(Software Obfuscation):Geekなぺーじ

    ソフトウェアの難読化に興味を持ったので、どういう手法があるのか調べてみました。 結構面白かったです。 この分野は勉強していくと非常に面白そうですね。 (メチャメチャ奥が深そうですね) 以下に、簡単な手法をいくつかピックアップしてみました。 様々な手法を組み合わせて、ぐちゃぐちゃの読みにくい出力を生成できるそうです。 また、自動的に出力をぐちゃぐちゃにするツールも色々あるようです。 名前マングリング 何をするかバレバレの名前をバイナリ中に残してしまうと、すぐに解析されてしまいます。 それを防ぐために関数名などをマングリングしてしまいます。 例えば、以下のようなコードがあったとします。 secret_key_funcという秘密鍵を扱う関数があるとします。 例えば、これをdefineでhogera()に変えてしまうと、何をしたい関数なのかが多少わかりにくくなります。 #include <stdi

    tsukkee
    tsukkee 2008/10/13
  • C言語でRubyライクなブロックを - ボクノス

    マクロでブロック渡せば良いんじゃないかなぁ。 #include <stdio.h> #include <stdlib.h> #define times(n, i, block) for (i = 0; i < n; i++) block int main(void) { int i,j; times(3, i, { printf("outer block : %d\n", i); times(3, j, { printf(" inner block : %d\n", j); }); }); return EXIT_SUCCESS; } 実行結果。 outer block : 0 inner block : 0 inner block : 1 inner block : 2 outer block : 1 inner block : 0 inner block : 1 inner block

    C言語でRubyライクなブロックを - ボクノス
    tsukkee
    tsukkee 2008/10/13
    マクロ使う