タグ

Cとprogrammingに関するMonMonMonのブックマーク (14)

  • MISRA-Cにおける「関数の末尾以外の return 禁止」の真意 - 新・日々録 by TRASH BOX@Eel

    MISRA C という失敗 (#2295472) | コーディング標準は役に立つのか | スラド 早期returnとMISRA-Cルール14.7は背反か否か. - Togetter MISRA-Cはそもそも、 どのルールを守り、どのルールから逸脱するのか検討し、決定する。 上記の決定内容とその理由(順守するルール、逸脱するルール、逸脱の理由と範囲など)についてドキュメント化する。 ――という工程を経る前提で作られているルール集なので、「使い物にならない制約」と感じるのなら逸脱して構わない(ただしプロジェクト内で議論したうえで、必要な部分はしっかりドキュメント化してね)のだけど、それは置いておいて。 付け加えるのなら、自分なら例えば「使用条件をドキュメント化した上で限定的にgotoを許可する*1」とかやるだろうけど、それも置いておいて。 MISRA-Cにて「関数の末尾以外の return 禁

    MISRA-Cにおける「関数の末尾以外の return 禁止」の真意 - 新・日々録 by TRASH BOX@Eel
  • Linear RPCをOSSとして公開させて頂きました:Tea Break:So-netブログ

    2015/09/02にLinear RPCをOSS (Open Source Software)として公開させて頂きました。 http://linear-rpc.github.io/ Linear RPCはデータフォーマットにMessagePackを使用したRPC (Remote Procedure Call)であるMessagePack RPCの一実装です。今回はC++によるクライアント/サーバーとJavaScriptによるクライアント実装などを公開させて頂きました。Linear RPCは、元々IPネットワーク経由で業務用機器を遠隔制御するためのプロトコルとして実装しましたが、RPCを利用したいすべてのアプリケーションやサービスで利用することが可能になっています。 なお、公開させて頂いた実装についてですが、C++11仕様ではありません。これは、Linux用のC++のコンパイラでC++11

    Linear RPCをOSSとして公開させて頂きました:Tea Break:So-netブログ
  • プログラムを高速化する話

    9. 9 最適化について 「細かい効率のことは忘れて、時間の 97% について考え よう。時期尚早な最適化は諸悪の根源だ。それでも残り 3% についても機会を逃すべきではない」 - Donald E. Knuth 「プログラム最適化の第一法則 : 最適化するな。 プログラム最適化の第二法則 ( 上級者限定 ): まだするな。 」 - Michael A. Jackson 11. 11 最適化の対象 主に Intel の Haswell マイクロアーキテクチャ以降を対象 多くのテクニックは他のプロセッサにも応用できます ベース マイクロアーキテクチャ プロセスルール 登場年 Nehalem Nehalem 45nm 2008 〃 Westmere 32nm 2010 Sandy Bridge Sandy Bridge 32nm 2011 〃 Ivy Bridge 22nm 2012 Hasw

    プログラムを高速化する話
  • コマンドラインからC系言語のコードフォーマットをかける方法 - Qiita

    フォーマッティングルールを決めてそれに従ってコーディングを行なうことは、コードの可読性を向上させるために特に複数人プロジェクトでは大切だと考えています。 一方で、フォーマッティングルールをそれぞれの開発者が覚えてそれに従ってコードを書くのも、他の開発者が書いたコードがフォーマッティングルールに従っているかを確認するのも、それなりにコストのかかる作業ですので、自動的にフォーマットを揃えてくれるコードフォーマッタを使うのが良いということになります。 コードフォーマッタを通すタイミングや方法については「コードを書く人が都度フォーマッタを通す」「ファイル保存時に自動的にフォーマットされるように設定する」「コミット時に自動的にフォーマットされるように設定する」「コマンドラインからコマンドを使ってフォーマットをかける」などいろいろ考えられ、フォーマットし忘れを防ぐには保存時やコミット時に自動的にフォー

    コマンドラインからC系言語のコードフォーマットをかける方法 - Qiita
  • IPA ISEC セキュア・プログラミング講座:C/C++言語編 第10章 著名な脆弱性対策:バッファオーバーフロー: #4 あふれを検出するデバッグ

    第10章 著名な脆弱性対策 バッファオーバーフロー: #4 あふれを検出するデバッグ 領域あふれの問題の検出については、ロジックが複雑に入り組んでいる場合、ソースコードから見いだすのは容易でない。そのような場合、デバッガ等のツールの下で対象のプログラムを動かして、問題を見つけ出すことになる。 スタックおよびヒープにおけるあふれを検出するためのコンパイラのオプションやデバッグ・ツールがいくつか存在する。 次にその主なものを紹介する。 あふれの検出等に使うことのできるデバッグ・ツール ヒープにおける領域あふれやダブルフリー等の問題を検出できるツールをふたつ紹介する。ひとつは独立したツール、もうひとつは統合開発環境の中の機能である。 (1) Valgrind [GNU/Linux] ヒープデバッガを中心とした GNU/Linux 専用のツールスイートである。割当領域外への書き込みや、メモリリーク

  • 祝!元祖コードゴルフ本が復刻! #codegolf #c - CodeIQ Blog

    CodeIQ中の人、millionsmileです。 CodeIQではすっかりお馴染みの問題となっている「コードゴルフ」。その元祖ともいえるがこの度めでたく復刻となりました!!! 『ショートコーディング 職人達の技法』 執筆者は、CodeIQの出題者で人気問題をたくさんだしているOzyさんです! CodeIQの出題者ってことは・・・ そうです!このがもらえる問題が掲載中です! 「コード美人」っていう名の問題です。 正解したらコード美人バッジがもらえるし、がもらえるかもしれないです。 ■コード美人(受付締切:2月24日(月)AM10:00まで) https://codeiq.jp/ace/ozy4dm/q723 の内容については、Ozyさんからの寄稿記事にてお楽しみください! ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ショートコーディング、再び Ozyです。 2007年

    祝!元祖コードゴルフ本が復刻! #codegolf #c - CodeIQ Blog
  • http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html

  • Big Sky :: C言語で文字列を自動伸張してくれるライブラリ「sds」

    C言語の文字列伸張は慣れないとコストの掛かるコーディングになりがちです。 またそういった文字列ライブラリというのは、直接 puts や printf に放り込めないという難点があります。 しかし sds というライブラリは異なります。 antirez/sds - GitHub Simple Dynamic Strings SDS is a string library for C designed to augment the limited libc ... https://github.com/antirez/sds 通常、C言語向け文字列ライブラリというのは独自の構造体ポインタを返します。そうする事で、文字列ポインタ以外の情報を詰め込んで処理する事が出来ます。しかしその反面、構造体ポインタをそのまま puts や printf に放り込めず、何かしらのアクセサを用意する必要がありまし

    Big Sky :: C言語で文字列を自動伸張してくれるライブラリ「sds」
  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
  • Learn C the Hard Way

    Learn to think like the computer hates you, because it does. Learn C The Hard Way (LCTHW) is a practical book teaching real world useful C using the same proven Learn The Hard Way method. LCTHW teaches real robust C coding and defensive programming tactics on real hardware rather than abstract machines and pedantic theory. The book emphasizes breaking your code on purpose, and in the process teach

  • Cello • High Level C

    #include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage

  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
  • C++ Advent Calendar 2012 「18日 : Cer に知って欲しい C++」 - krustf の雑記

    この記事は, C++ Advent Calendar 2012 (C++ Advent Calendar 2012 - PARTAKE) の18日目です. 温いネタをやりたいので C 言語を使っている人 (Cer) に C++ の知って欲しい/今すぐ使える機能を Tips 的に書いていこうと思います. 対象は特に設けなくていい気がしますが, 例えば数値計算クラスタとか. 普段 malloc とか for とかぶんぶんしてるような気がするので言い例かも. よく分からないところがあったらこの記事か Twitter の @krustf にでも質問してください. 後, 詳しい説明はしないほうが良いと思います. "C++ ってこんな風にかけるのか!" ぐらいの感想を持って頂いて, 使ってみようとする人が増えてくれればと思います. その点では途中よく分からない語が出てくるかもしれませんが「へー」ぐらい

    C++ Advent Calendar 2012 「18日 : Cer に知って欲しい C++」 - krustf の雑記
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

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

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