[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のポインタを整数に変換したいときがあります。このとき問題になるのは、ポインタのサイズが 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
メニュー 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
現状、本稿ははげしくかきかけです。フィードバックをおまちしております。 はじめに† Perl で C の拡張がスラスラと書けたら……。C の拡張がスラスラ書けたら、ネイティブのバインディングもスラスラ書けるし、ホットスポットを C で最適化するなんてこともお手の物。書けたらいいけど、XS ってなんかむずかしそう……。 ちがうんです! 今までの XS の教え方がまちがっていたんです!この教材をつかえば、誰でも簡単に今すぐに XS を書けるようになるんです。Perl の C 拡張を書いて同僚や上司を アッー! と言わせちゃおう! この教材では XS のややこしい機能をつかわずに、Perl の C 拡張を書く方法を伝授!初心者でもすぐに C 拡張が書けるようになるぞ! 前提知識† 本稿では一般的な C の知識および Perl の知識を読者がもっていることを想定しています。XS の知識や Perl
_ 今、Cで開発するためのスタンダードを知るための本 例によってアスキーの鈴木さんから、本をもらった。花井さんのモダンC言語プログラミングだ。なお、似たような題の洋書があって、しかも花井さんは翻訳もするので、その本の翻訳書と勘違いされる可能性もありそうだが、完全にオリジナルだ。 Cは、Unixと共に(というか少し遅れて)生まれたということは、すでに40年以上の歴史があり、それだけの年月がたてば、COBOLなどと同じく老害言語と言われてもこれっぽっちもおかしくはない。 ところが、COBOLと異なり開発者市場がどんどん先細り(あるいは固定化)されるということはなく、むしろ増えている。それどころか最近の調査では最も利用されている(TIOBE 2013)。 一方、C++が先鞭をつけたビジネスプログラミングへのオブジェクト指向プログラミングの適用は、Java、Objective-C、C#と種類を増や
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
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/ (日本
上記の様に、トークンは各識別毎に作られます。オブジェクトのキーおよび値もそれぞれのトークンとして格納されます。 jsmn_parse はトークンの量が不足している場合、エラー JSMN_ERROR_NOMEM を返します。例えば、どれだけの量のトークンが JSON 文字列として与えられるか分からない場合、トークンのサイズを広げる必要があります。この場合、jsmn ではパーサを再初期化する事なしに、トークンを広げて再度 jsmn_parse を実行する事でパースを続行出来る様になっています。 ただしどれだけの量が不足していたかは分からないので、適度な増減を考慮する必要があります。 今日は試しに twitter のパブリックタイムラインをパースしてみました。 #include <assert.h> #include <string.h> #include <memory.h> #include
おなじみ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
あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずC言語について知っていることを書いた。 パッケージマネージャ まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。 C言語の場合は、静的リンクをすればすべてのモジュールがひとつのバイナリファイルにまとまる。バージョンも固定され、適切にロードも行われる。 動的リンクで読み込まれるライブラリを切り替えるのはめんどい。chrootとかで。 アプリケーションサーバー 多くのWebサーバは、C言語もしくはC++言語で書かれている。すなわち、あなたが使っているWebサーバが、すぐにアプリケーションサーバとなる。 ライブラリのインターフェースとしては、Calli
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
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 以
はじめに PHPを使っていると、パフォーマンスの問題や仕様上の欠点に遭遇することがあります。また、LinuxなどでPHPを動かしている場合、すでにある便利なライブラリをPHP上で使いたいケースもあるでしょう。このような時に、PHPエクステンションという選択肢は、開発者にとって非常に大きな強みになります。また、直接PHPエクステンションを作る用途がなくても、仕組みを知っておくと、PHPで原因不明の問題が発生した場合にも役立ちます。そして、そのような問題に遭遇しないための開発につながることもあります。 本連載ではPHPエクステンションを初めて作成する方のための全体の流れや、関数やクラスの作成方法、そして、より実践的にライブラリをPHPエクステンションとして利用する方法を紹介いたします。 対象読者 PHPとC言語の基本構文を理解していて、PHPエクステンションに興味がある方、さらに深くPHPを知
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く