タグ

Cに関するkenjiro_nのブックマーク (153)

  • LLVM/Clangがぜってーサポートしねーと宣言しているLinuxカーネルに多用されているGCC拡張

    [Phoronix] LLVM/Clang 3.3 Should Be Close To Building Linux Kernel LLVMLinux Bug 9254 – clang can't build iptables in Linux kernel: error: fields must have a constant size: 'variable length array in structure' extension will never be supported ClangでLinuxカーネルをビルドできる状況は、多くの勢力に望まれてきた。理由は様々だ。Clangはビルド時間が短い。静的解析による警告も優れている。ソースコードも綺麗だ。複数の独立した実装でコンパイルできるコードは、誤りを静的に発見しやすい移植性にも優れる。より優れたコピーレフトなライセンスであるGPLv

  • いやなブログ: Cのポインタを整数に変換する

    Cのポインタを整数に変換する Cのポインタを整数に変換したいときがあります。このとき問題になるのは、ポインタのサイズが int と同じとは限らないということです。たとえば、 x86_64 の 64ビットのバイナリでは sizeof(int) = 4, sizeof(void *) = 8 となります。ポインタと同じサイズの整数を使いたい場合は C99 で導入された stdint.h で提供される intptr_t または uintptr_t を使います。 stdint.h には他にも int32_t や int64_t など、サイズつきの整数の型も提供されています。たとえば、uint64_t を使うと、64ビットの符合なし整数を扱うことができます。 私の場合、C++ のプログラムで void * から直接 uint64_t にキャストしようとしてはまりました。次のプログラムを x86_32

    kenjiro_n
    kenjiro_n 2013/10/09
  • cppcheck 日本語マニュアル | 一人ぼっちの共鳴

    一定期間更新がないため広告を表示しています

    cppcheck 日本語マニュアル | 一人ぼっちの共鳴
  • Splintをがんばって翻訳するウィキ

    メニュー Introduction About This Document 1 Operation 2 Null Dereferences 3 Undefined Values 4 Types 5 Memory Management 6 Sharing 7 Function Interfaces 8 Control Flow 9 Buffer Sizes 10 Extensible Checking 11 Macros 12 Naming Conventions 13 Completeness 14 Libraries and Header File Inclusion Appendix A Availability Appendix B Flags Appendix C Annotations Appendix D Specifications Appendix E Annotated

    Splintをがんばって翻訳するウィキ
  • はてなブログ | 無料ブログを作成しよう

    織田信長 ぼちぼち、元気にやっています。少し薬にも慣れた...んかなぁ。相変わらずべられないけど。朝、指がこわばって文字なんて入力できなかったけど、それはほぼなくなった。関節もどこも痛くない。薬効いてきたんやろな。 で、ブログを書こうと言う気がまた起きてきた。 …

    はてなブログ | 無料ブログを作成しよう
  • C による Perl 拡張入門(

    現状、稿ははげしくかきかけです。フィードバックをおまちしております。 はじめに† Perl で C の拡張がスラスラと書けたら……。C の拡張がスラスラ書けたら、ネイティブのバインディングもスラスラ書けるし、ホットスポットを C で最適化するなんてこともお手の物。書けたらいいけど、XS ってなんかむずかしそう……。 ちがうんです! 今までの XS の教え方がまちがっていたんです!この教材をつかえば、誰でも簡単に今すぐに XS を書けるようになるんです。Perl の C 拡張を書いて同僚や上司を アッー! と言わせちゃおう! この教材では XS のややこしい機能をつかわずに、Perl の C 拡張を書く方法を伝授!初心者でもすぐに C 拡張が書けるようになるぞ! 前提知識† 稿では一般的な C の知識および Perl の知識を読者がもっていることを想定しています。XS の知識や Perl

    C による Perl 拡張入門(
  • 今、Cで開発するためのスタンダードを知るための本 - L'eclat des jours(2013-09-30)

    _ 今、Cで開発するためのスタンダードを知るための 例によってアスキーの鈴木さんから、をもらった。花井さんのモダンC言語プログラミングだ。なお、似たような題の洋書があって、しかも花井さんは翻訳もするので、そのの翻訳書と勘違いされる可能性もありそうだが、完全にオリジナルだ。 Cは、Unixと共に(というか少し遅れて)生まれたということは、すでに40年以上の歴史があり、それだけの年月がたてば、COBOLなどと同じく老害言語と言われてもこれっぽっちもおかしくはない。 ところが、COBOLと異なり開発者市場がどんどん先細り(あるいは固定化)されるということはなく、むしろ増えている。それどころか最近の調査では最も利用されている(TIOBE 2013)。 一方、C++が先鞭をつけたビジネスプログラミングへのオブジェクト指向プログラミングの適用は、Java、Objective-C、C#と種類を増や

    kenjiro_n
    kenjiro_n 2013/10/02
  • CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』

    CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』 Eclipse CDT からCppcheckの結果が見れたら便利だなーなんて思って、Eclipseのプラグインを探してみたら、こんなのを見つけた。 cppcheclipse - Integration for cppcheck with Eclipse (CDT) - Google Project Hosting なんと語呂がいい名前。座布団一枚だ。 というわけで、試してみる。 環境# Eclipse 4.2 Juno Windows 7 Cppcheck 1.58(注:1.58でないと、Eclipse 4.2 Junoで動かなかった」 cppcheclipseのダウンロードとインストール# Eclipse CDTとCppcheckはインストールされていることが前提で。 Cp

    CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』
  • cppcheclipseでC++の静的解析 - 滴了庵日録

    EclipseのCDT(C/C++開発用プラグイン)でのC++開発で、 オープンソースの静的解析ツールcppcheckを用いてC++コードをチェックする方法のメモ。(プラットフォームはLinuxです。Windowsでは未確認) (1) 「Eclipse IDE for C/C++ Developers」をインストールする。(説明省略) (2) Eclipse で C++プロジェクトを作成する。(説明省略) (3) cppcheck をインストールする。 cppcheck は、C++用の静的解析ツールです。 下記からソースをダウンロードします。 http://sourceforge.net/projects/cppcheck/ (OS自動判定するんでLinux環境から) http://sourceforge.jp/projects/sfnet_cppcheck/releases/ (日

    cppcheclipseでC++の静的解析 - 滴了庵日録
  • Big Sky :: C言語から使えるJSONパーサ、JSMNを試してみた。

    上記の様に、トークンは各識別毎に作られます。オブジェクトのキーおよび値もそれぞれのトークンとして格納されます。 jsmn_parse はトークンの量が不足している場合、エラー JSMN_ERROR_NOMEM を返します。例えば、どれだけの量のトークンが JSON 文字列として与えられるか分からない場合、トークンのサイズを広げる必要があります。この場合、jsmn ではパーサを再初期化する事なしに、トークンを広げて再度 jsmn_parse を実行する事でパースを続行出来る様になっています。 ただしどれだけの量が不足していたかは分からないので、適度な増減を考慮する必要があります。 今日は試しに twitter のパブリックタイムラインをパースしてみました。 #include <assert.h> #include <string.h> #include <memory.h> #include

    Big Sky :: C言語から使えるJSONパーサ、JSMNを試してみた。
  • Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い

    おなじみC/C++から使えるJSONライブラリを紹介するコーナー。まずは過去のまとめ。 最速と言われる JSON パーサ「rapidjson」が当に爆速なのか試してみた。 C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。 僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search APIから検索するまでにやった、たった一つの事。 C言語から使えるJSONパーサ、JSMNを試してみた。 何も見ずにC++でjsonパーサが書けるか試してみた。 ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い! 最近は結構 matsuu さんのブクマから見つけて記事を書いてたけど今日はそうじゃない所からご紹介。 Jansson — C library for working w

    Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い
  • C言語でWebAppの開発に必要なN個のこと

    あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずC言語について知っていることを書いた。 パッケージマネージャ まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。 C言語の場合は、静的リンクをすればすべてのモジュールがひとつのバイナリファイルにまとまる。バージョンも固定され、適切にロードも行われる。 動的リンクで読み込まれるライブラリを切り替えるのはめんどい。chrootとかで。 アプリケーションサーバー 多くのWebサーバは、C言語もしくはC++言語で書かれている。すなわち、あなたが使っているWebサーバが、すぐにアプリケーションサーバとなる。 ライブラリのインターフェースとしては、Calli

    C言語でWebAppの開発に必要なN個のこと
  • IEEE floating point exceptions: NaNs, 1.#INF, 1.#IND, etc

    IEEE floating-point exceptions in C++ This page will answer the following questions. My program just printed out 1.#IND or 1.#INF (on Windows) or nan or inf (on Linux). What happened? How can I tell if a number is really a number and not a NaN or an infinity? How can I find out more details at runtime about kinds of NaNs and infinities? Do you have any sample code to show how this works? Where can

  • Splint翻訳 Wiki - Splint翻訳 - OSDN

  • Splint Home Page

    Secure Programming Lint SPecifications Lint First Aid for Programmers Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.

  • プログラム解析ツール

    ● Splint (Secure Programming Lint), Annotation-Assisted Lightweight Static Checking http://lclint.cs.virginia.edu/ Splint(LCLint) は静的に C プログラムをチェックするツール。手間をほとんどかけなくても、LCLint は優れた lint(次項)として利用でき、さらにプログラムに注釈を加えれば、標準的な lint が行うどんなチェックより強力にチェックを行う。たとえば、バッファオーバーフローが起こりそうなところを静的に検出するのに利用できる。ソフトウェアのライセンスは GPL 。 以下のダウンロードが可能。 Source Code (Splint は、スタンダードの C コンパイラを持つどの版の UNIX システムでもコンパイル可能。Splintを UNIX 以

    kenjiro_n
    kenjiro_n 2013/09/03
  • GitHub - kwin/cppcheclipse: Eclipse plugin integrating cppcheck with Eclipse CDT

  • Ubuntu の build-essentials 的なことを yum でやりたいときの方法 - tokuhirom's blog

    Ubuntu だと、開発関連のツールキットを一気にするには以下のようにすればよろしい。 apt-get install build-essentials これとおなじことを CentOS でやるには、以下のようにすればよいようです。 # yum groupinstall "Development Tools" # yum install kernel-devel kernel-headers 参考文献: Installing build-essentials in CentOS (make, gcc, gdb)

    kenjiro_n
    kenjiro_n 2013/07/23
    Cコンパイラをはじめとした基本的な開発ツールをインストールする方法。yum groupinstall "Development Tools";  yum install kernel-devel kernel-headers
  • PHPエクステンションでHelloWorld

    はじめに PHPを使っていると、パフォーマンスの問題や仕様上の欠点に遭遇することがあります。また、LinuxなどでPHPを動かしている場合、すでにある便利なライブラリをPHP上で使いたいケースもあるでしょう。このような時に、PHPエクステンションという選択肢は、開発者にとって非常に大きな強みになります。また、直接PHPエクステンションを作る用途がなくても、仕組みを知っておくと、PHPで原因不明の問題が発生した場合にも役立ちます。そして、そのような問題に遭遇しないための開発につながることもあります。 連載ではPHPエクステンションを初めて作成する方のための全体の流れや、関数やクラスの作成方法、そして、より実践的にライブラリをPHPエクステンションとして利用する方法を紹介いたします。 対象読者 PHPとC言語の基構文を理解していて、PHPエクステンションに興味がある方、さらに深くPHPを知

  • 連載 よくわかるC言語----目次:ITpro

    この連載に目を止め,「読んでみようか」と思ってくれた皆さんは,これまで,どんなプログラム言語の経験があるでしょうか? 「JavaScriptなどのWeb系のスクリプト言語はよく使う」,「Visual BasicやJavaでアプリケーションを作っているのだけど,基を確認したくて…」,あるいは「連載1回目だし,これからプログラミングを学びたい」など,いろいろな方がいらっしゃると思います。 連載は,「C言語」というプログラミング言語の“定番”を通して,あらゆるプログラミングに共通する基礎となる部分を,じっくり解説していきます。初心者の方はもちろん,プログラミング経験のある方も自分の知識を再確認するのにきっと役立つと思います。 ・第1回 もう一度,C言語から始めよう ・第2回 変数の性質を理解しよう ・第3回 制御構文がわかればプログラムの「流れ」がわかる ・第4回 変数のスコープをアドレスを

    連載 よくわかるC言語----目次:ITpro