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言語)その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 ...

独習C++ 改訂版日記 P.52 練習問題2.2 2.〜

2.(こんなコードで良いのか?)
[]{#more}

#include 
#include

using namespace std;

class t_and_d {
  time_t now_time;
public:
  t_and_d(time_t _now_time);
  void disp();
};

t_and_d::t_and_d(time_t _now_time)
{
  now_time = _now_time;
}

void t_and_d::disp()
{
  struct tm *tm = localtime(&now_time);
  char *time_str = asctime(tm);

  printf("%s\n", time_str);
}

int main()
{
  time_t n = time(NULL);
  t_and_d td(n);

  td …

View comments.

more ...

独習C++ 改訂版日記2

というわけで、P.52 練習問題2.2
[]{#more}
1.

#include 
using namespace std;

class stack {
  char *stck;
  int tos;
  char who;
  int size;
public:
  stack(char c, int _size);
  void push(char ch);
  char pop();
};

stack::stack(char c, int _size)
{
  size = _size;
  stck = (char *)malloc(size);
  tos = 0;
  who = c;
  cout …

View comments.

more ...

独習C++ 改訂版日記

独習C++{width="1" height="1"}」(改訂版)を(本自体は、ずいぶん前に買ったんですが)やり始めているので、書いていくことにしてみようと思う。(いつまで続くやらw)

いきなりだが、P.46 練習問題2.1から。
[]{#more}

  1. キュークラスを改良して、初期化関数をコンストラクタに置き換え。
  2. stopwatchクラスの作成
  3. 次に示すコンストラクタの誤りは?

View comments.

more ...