C言語のマクロの引数の最後に ... を指定することで任意個の引数を取り、 __VA_ARGS__ で参照できる:
C言語のマクロの引数の最後に ... を指定することで任意個の引数を取り、 __VA_ARGS__ で参照できる:
UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行
オブジェクトについて抽象から具象まで取り混ぜて説明していた時、最も具象なレベルで見れば、オブジェクトはメモリ上に確保した領域にすぎないと説明しました。 そんな説明をしていた時、メソッドの実体ってどこにどうあるのですかと質問を受けました。人の心はどこにどうあるのですかという質問に比べると緩い質問ですが、良い質問だと思いました。こういう疑問を持つのは大事だと思うからです。自分もかつてプログラムとは結局のところどう実行されるのかが気になりました。プログラマなら誰もが通る道だと思います。 そんなわけでJavaのような箱入り娘から離れて、デレのないツンデレ娘ことC言語で古のテクニックを見せることにしました。 とりあえず次の簡単なコードから始めます。C言語は知らなくても構いません。関数fnがあって、引数に2を加算して返すことだけを読み取ってください。 #include <stdio.h>
ディレクトリ内の全てのファイルを検査 通常、プログラムはプロジェクトディレクトリ内にある多くのソースファイルから成り立っています。 そのディレクトリ内にある全てのソースファイルをチェックする方法から。 サンプルのコードですと面白くないので、C/C++で書かれたオープンソースをダウンロードしてCppcheckを実行してみました。 サンプルとして選んだソースは、MariaDBのコネクターです。私は、データベースを扱うことが多く、たまたまMariaDBのソースが手元にあったからです。(mariadb-connector-c-2.3.2-src.tar.gz) Checking mariadb-connector-c-2.3.2-src/examples/mysql_affected_rows.c… 1/109 files checked 0% done Checking mariadb-conn
C言語で、自作の構造体のメンバをユーザに開示しないテクニックとして、Opaqueポインタというものが知られています。今回は、書籍「C++のためのAPIデザイン」の3.1.6節を参考に、Opaqueポインタを使う簡単なサンプルを紹介します。 Opaqueポインタを使わない場合 人に関するデータを集めた構造体Personと、その構造体を使ったライブラリを作成することを考えます。以下にPerson.hのコードを示します。 #pragma once typedef struct _Person { int age; } Person; // 以下、Person構造体に関するAPI Person* createPerson(int age); // Person構造体のオブジェクトを生成 void printPerson(Person* ptr); // Person構造体を使った操作(メンバのプリ
ERR06-C. assert() と abort() の終了動作を理解する C言語仕様のセクション 7.2.1.1 は、assert() の動作を次のように規定している [ISO/IEC 9899:2011]。 assert マクロは、プログラム中に診断機能を付け加える。assert マクロは、ボイド式に展開する。assert マクロを実行するとき、expression(スカラ型をもたなければならない。)が偽(すなわち、0と等しい)である場合、assert マクロは、偽の値をもたらした特定の呼出しに関する情報(情報の中には、実引数のテキスト、ソースファイル名、ソース行番号およびその assert マクロの呼び出しを字句的に囲んでいる関数の名前を含む。後の3つはそれぞれ __FILE__ および __LINE__ の値ならびに識別子 __func__) の値とする)を処理系定義の書式で標準
次のようなプログラム test.c について考える: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> struct test { int32_t len; int8_t buf[16]; }; int main(int argc, char *argv[]) { struct test *p = malloc(sizeof(struct test)); int8_t buf[16]; p->len = sizeof(p->buf); bzero(p->buf, p->len); printf("0x%lX-0x%lX => 0x%lX\n", (long)p->buf, (long)p->buf+p->len-1, (long)buf); bcopy(p->buf, buf,
さとう ゆうすけ <ads01002 @ nifty.com> Binary2.0 Conference 2006 発表資料 自己紹介 さとう ゆうすけ (d:id:yupo5656) ソフトウェア エンジニア Hello World愛好家 Binary Hacks の執筆に参加 主な担当ハック: #25 「glibcを使わないでHello Worldを書く」 自己紹介 好きな休日の過ごし方 コードを読む、書く 読書 ○ The Single UNIX Specification ○ ISO/IEC 9899:1999 (C) ○ ISO/IEC 14882:2003 (C++) SICPの問題をC++で解く Z80マイコン製作 Hello World 自己紹介 + 本日の話のレベル user-space バイナリアン kernel-space バイ
前回は JSMN というのを試したけど、今度も matsuu さんのブクマから。。。 parson Lightweight json parser and reader written in C. http://kgabis.github.com/parson/ 特徴は 軽い (2ファイルだけ) 単純なAPI ドット記法による json 値のアドレッシング (C言語の構造体やOO言語のオブジェクトに似た感じ。例: "objectA.objectB.value") C89 コンパティブル テストスーツ 前回の JSMN とは違い、メモリを動的に確保するタイプ。DOM の様にルートノードから探索を始め、最終的にルートノードを指定してメモリを開放する。 今回もtwitterのタイムラインをパースしよう。 #include <assert.h> #include <string.h> #inclu
1. ガイド¶ あなたがOMakeを始めて使うのであれば、 2. OMakeクイックスタートガイド はどのようにプロジェクトを始めるべきなのかについて、簡単に説明してくれるでしょう。 3. OMakeビルドサンプル ではプロジェクトをビルドするための、より詳細なコードサンプルを紹介しています。そして 4. OMake言語の概要と構文 では実際にプログラミングするときに役立つ、いくつかの一例を紹介しています。 1.1 注意事項¶ OMakeマニュアル 日本語訳 v1.3.2 このドキュメントは OMake バージョン0.9.8.6の マニュアル を日本語訳したものです。原文のニュアンスを忠実に翻訳するよう心がけていますが、意図しない翻訳ミスやドキュメントの不備があるかもしれません。よって、 内容の正確さについて保証することはできません。 2. クイックスタート OMakeを利用するためのクイ
「Linux愛好者の独り言」は,Linuxやプログラミングの,楽しさや初心者向け情報を配信するBLOGです。 CutterはC/C++用の単体テストユニットフレームワーク(所謂xUnit)だ。 評判が良いので,以前から使いたかったのだが,いかんせん,本家のチュートリアルが丁寧すぎてわかりにくく,使い方がわからなかった。 このチュートリアルでは,automake等を用いた本格的な使い方が書かれているので, てっきりCutterを使う時はいつもこのくらいの準備が必要なのかと思っていた。 ほんのちょっと,テストコードを書いて開発の補助にしたいだけなのに,いちいちMakefile.amだのconfigure.acだのを作るのは面倒だ。 (これが面倒でない人間はIDEなんて使わないだろう) 毎度,このチュートリアルに従うくらいなら,cxxTestでもを使うほうがましだと思った。 だが,どうやら,本家
名前 perlembed - C プログラムに perl を埋め込む 説明 前書き あなたの欲しいのはどれ? Perl から C を使う perlxstut, perlxs, h2xs, perlguts, perlapi を読みましょう. Perl から Unix プログラムを使う バッククオート及び perlfunc にある system と exec を読みましょう. Perl から Perl を使う "do" in perlfunc 及び "eval" in perlfunc, "require" in perlfunc, "use" in perlfunc を読みましょう. C から C を使う 構成を考え直してみましょう. "><C から Perl を使う> このままどうぞ... 道のり C プログラムのコンパイル C プログラムに Perl インタプリタを追加 C プログラ
What it is codepad.org is an online compiler/interpreter, and a simple collaboration tool. It's a pastebin that executes code for you. You paste your code, and codepad runs it and gives you a short URL you can use to share it. Paste the URL into chat or email to get help or to show someone how to do something. Or just try things out when you don't have an interpreter handy. It works well on many p
frsw3nr.mydns.jp is not accessible... Sorry. I do not know why this site is not working. If you know Administrator of this site, please contact directly. You may be able to see it in Google cache. For administrator ... MyDNS.JP did not received IP address from you over One week. Please check your notify system. If you restart notification of IP address, MyDNS.JP will apply your IP address to DNS i
はじめに C/C++でユニットテストをやってみようと思い、調べてみたらGoogleTestというC/C++向けのユニットテストフレームワークがあることを知りました。 セットアップの手順や使い方を簡単にですが、まとめてみました。 ソフトウェアのバージョン Visual Studio 2008 Express GoogleTest 1.6.0 GoogleTestの入手 1. 以下のサイトからgtest-1.6.0.zipをダウンロードします。 googletest - Google C++ Testing Framework - Google Project Hosting 2. zipファイルを解凍して、任意のフォルダにコピーします。 GoogleTestをビルドする GoogleTestはそのままでは使えないので、Visual Studioでビルドしてから使います。ただし、古いバージョン
main() の前に関数を呼ぶ C/C++ のプログラムで、main() の前に関数を暗黙的に呼びたいときがあります。ここでは GCC の拡張を使った方法と、C++ のコンストラクタを使った方法を紹介したいと思います。 GCC では main() の前に呼ばれる関数を __attribute__((constructor)) という拡張機能を使って定義できます。たとえば、次のプログラムでは main() の前に foo() が呼び出されます。 #include <stdio.h> __attribute__((constructor)) void foo() { printf("hello, before main\n"); } int main (int argc, char **argv) { printf("hello, world\n"); return 0; } 実行結果は以下の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く