CソースとC++ソース共存実験(その1)

CソースとC++ソースの共存を実験してみた。
とは言っても、printf()とcout<< を同時に使ってみただけ。

同時に使えるんですね。まずは、第一歩。

$ cat c_cpp_test.cpp #include #include using namespace std;

int main()
{
printf("Hello, world\n");
cout << "Hello, world2\n";

return 0;
}
\$ g++ c_cpp_test.cpp
\$ ./a.out
Hello, world
Hello, world2
\$

続きがあるのか?は未定w

View comments.

more ...

SQLiteでprepared statementとBLOBを使って構造体を保存(C言語)その2 #sqlite

と言うわけで、前回に続き今回は、前回作成したDBファイルをsqlite3コマンドで見てみます。

以下の様に構造体はBLOBで格納したのですが、最初のメンバーはsqlite3コマンドで見られます。
Oracleではちょっと考えられませんが、この辺がsqliteらしいとこでしょうか。
$ sqlite3 test.dbSQLite version 3.6.22Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite> select * from member;0|Isono Katsuo1|Isono Wakame2|Huguta Tarao3|Huguta Masuo4|Huguta Sazaesqlite>

View comments.

more ...

SQLiteでprepared statementとBLOBを使って構造体を保存(C言語)その1 #sqlite

SQLiteのC言語APIを使ってprepared statementで、BLOBを使ってみます。

基本的には、以下のサイトに書いてある方法ですが、日本語で書いてみることにします。
http://www.sqlite.org/capi3ref.html#sqlite3_stmt

  1. sqlite3_prepare_v2()(あるいはそれに類するもの)を使って、sqlite3_stmtのオブジェクトを作る。
  2. sqlite3_bind_*() インターフェースを使ってパラメータに値をBind。
  3. sqlite3_step()を使ってSQL実行。(sqlite3_step()は何回でも実行できる)
  4. sqlite3_reset()を使ってstatementをリセットして、step 2に戻る。これは何度でもできるし、やらなくても良い。
  5. sqlite3_finalize()を使ってオブジェクトを破棄する。

[]{#more}

というわけで、いきなりサンプルコードw
便利だなーと思ったのは、sqlite3_errmsg()関数。dbを引数にすると、

$ gcc -o sqlite_test sqlite_test.c -lsqlite3
$ chmod 000 test.db

と、DBファイルを読み書き出来ないようにして …

View comments.

more ...


C/C++でGC

Java野郎(私)が、C/C++でメンドイものの一つに、

「malloc()したらfree()しなきゃならん」というものがある。

大体、誰も参照しなくなったら、もはや、誰も触れないんだから、勝手に開放してほしいのだ。

でも、それをC言語自体に望むのは無理だって言うのもわかってる。

どうにかなんないの?と思っていたら、C/C++でGCするためのライブラリがあるということを知りました。

http://www.hpl.hp.com/personal/Hans_Boehm/gc/

自分(個人)でプログラム書くときは、これ使います。多分。

(いちいち、malloc()/free()なんてしてられっか)

View comments.

more ...