はじめに 本記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。
目次 準備 まずはC言語プログラムを呼び出す 簡単な数値のやりとり NArray配列を渡す Swigを使ってお手軽変換 参考文献 準備 このチュートリアルではRuby 1.8系列の使用を前提にしています。 確認はすべてRuby 1.8.4 [i386-Cygwin]で行いました。 NArrayはVersion 0.5.8を用いています。 またそれ以外に以外に以下のものが必要です。 Cコンパイラ Rubyのコンパイルに用いたものと同じものが必要です。 バイナリパッケージを導入した場合はどのコンパイラでビルドされたものか 知る必要がありますが、UNIX系ではたいていgccです。 ruby.h, mkmf.rb Rubyをソースコードから自分でビルドした場合はインストールされていると 思いますが、バイナリパッケージを導入した場合はruby.hやmkmf.rbがあるか 確認する必要があります。開発
2 : ◆yLAhgX0PfU :09/12/26 22:07:50 ID:P6tTRkg5 ┏ ┓ C言語 授業中 ┗ ┛ ∧∧ l: _つ/ /;:’ ∧_∧┌ _||/ (,,゚Д゚).⊃ / / l::゚/:(` ,,/:|  ̄||.,o ∧_∧ . l:_つ/ / l//:’と || :| .o'  ̄o , ・∀・) ⊃/ /;:’ ∧_∧┌ _||/ l: _つ/ / l:’/:(` ,,/:|  ̄||.,o ,ヽ⊃ ./ / l//:’と || :| .o' ∧∧ ⊃ .つ / ): / /;:’ ∧_∧┌ _||/ .,(Д゚ ,,)_┐ / /
ここでは、WinSockを使ったWindowsネットワークプログラミングの説明を行いたいと思います。 ここで対象としている読者は、ネットワークプログラミング初心者(もしくは入門者)かつWindows環境でプログラミングを行いたい人です。 WinSockという名称は、Windows Socketsから来ています。 名前の通り、Winsockはウィンドウズでソケットを使ってプログラムを書くためのAPI(Application Program Interface)です。 Winsockを使うと、TCP/IPなどインターネットを使って通信を行うプログラムが書けます。 ここで説明を行うwinsockのバージョンは2.0です。 ただし、大枠に関してはversion 1.0と2.0で同じ部分もあるので1.0を利用する方でも参考にはなると思います。 Winsockが対応するWindowsのバージョンとして
今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlやC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最
const char* const の2つのconstがそれぞれが何の値を変更不可にするのかのまとめ。 const char* char* const const char* const const char* の変数は、定数データへのポインタです。中身の変更不可、アドレスの変更可です。 覚え方 *「アスタリスク」は、その左側すべてに係る。 ↓ 「const char」のポインタ ↓ 「文字を変更不可能な文字列」へのポインタ ↓ 中身の変更は不可、アドレスの変更は可 char szAAAAA[ ] = "AAAAA"; char szBBBBB[ ] = "BBBBB"; const char* pBuffer = szAAAAA; // 定数データへのポインタ pBuffer[1] = 'C'; // 不可(コンパイルエラー) pBuffer = szBBBBB; // 可(正しい) c
C言語は、ポインタが使える言語です。ポインタを使えば、メモリの直接的な操作など、より柔軟なプログラミングが可能です。一方、そのためにはポインタがどのようなメモリ領域を指し示しているか、またポインタ自体が有効なアドレスを保持しているかなどについて十分な理解が必要です。 本稿では、C言語のポインタについて、配列との対比に焦点を当てて解説を行います。 *** C言語では、ポインタを配列のように扱うことができます。また、配列名はポインタに変換可能で、別のポインタに代入できます。 まずは1次元の場合について、ポインタと配列の関係を考えてみましょう。 宣言文の記述 いま、ポインタと配列を次のように宣言したとします。 char *p; ← char型へのポインタpを宣言 char a[5]; ← char型を要素とする、要素数5の配列aを宣言 この宣言の結果を図にすると、図1、図2のようになります。 図
Emacs エディターで C 言語のプログラムを書く人向けに、入門用の解説がないように思う。そこで、知っておくと便利な機能をまとめてみた。 読者は、Emacs の操作とカスタマイズが最低限できる人を対象にしている。つまり、C-x C-f といったショートカット・キーが使えて、.emacs の設定ファイルがいじれる人。各機能について、基本的な使い方とその効果、あと最低限の設定について書き出した。 目次 ソースの色付け インデント アラインメント コメント info マニュアル スペル・チェック タグ・ジャンプ 関数名の補完入力 コンパイルとエラー行ジャンプ ChangeLog ファイル 1. ソースの色付け Emacs は、C 言語のソース・ファイルを解析して、if や for といったキーワードに対して、自動で色を付ける。 色を付けることでソースにメリハリが生まれ、可読性が上がる。また、ス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く