マスタカネット > マスタカの ChangeLog メモ > C

マスタカの ChangeLog メモ / C

カテゴリ「C」最新ページ / 1 2 次ページ / page 1 (2)

2002-01-15 (火)

printfで、0x0000f1f2のような書式にする。 [C]

2002-01-15-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

printf("hexl = 0x%08x\n", hexl);



2002-02-07 (木)

構造体定義+宣言を同時にやる。 [C]

2002-02-07-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

↓これで、構造体定義+宣言を同時にできる。( ´_ゝ`)ヤレヤレ...

static struct {
    i32 cnt;
    u8* pos;
    u8  buf[sem_UBUFSIZE];
} sem_ubuf;



2002-02-25 (月)

size_t 型 [C]

2002-02-25-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

sizeof演算子で生成される符号なし整数の型。


2002-02-26 (火)

外部変数の提供 [C]

2002-02-26-2.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

外部変数を提供する場合は、提供する人がCファイルに実体を持たなくてはいけない。
当たり前といえば、当たり前か。。。


2002-03-02 (土)

gcc の内部定義の表示方法 [C]

2002-03-02-2.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

% gcc -E -dM -x c /dev/null


2002-03-26 (火)

インライン関数 [C]

2002-03-26-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

GNUコンパイラだと、
__inline__ void func();
とかでインライン関数になるらしい。


2002-04-01 (月)

gcc の最適化オプション [C]

2002-04-01-2.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

gccに、オプション'-O2'を付けると、コードを最適化できる。
知っていたけど、gdbの変な動きと結び付かなかった。。。


2002-04-09 (火)

Solaris9 での double と long long のサイズ [C][Solaris9]

2002-04-09-2.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

sizeof(double) == 8
sizeof(long long) == 8


2002-07-15 (月)

セクション構造 [C]

2002-07-15-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

.text
実行コードを格納するセクション
実行・読み込みのみ可能で書込みは不可
.rodata
定数値を格納するセクション
読み込みのみ可。書込み・実行は不可
.data
初期化済みデータを格納するセクション
読み書きのみ可。実行は不可
.bss
非初期化データを格納するセクション
読み書きのみ可。実行は不可
bss はプログラムがロードされた時点で 0 クリア
されるべき領域だそうです。
bss が外部変数領域とすると、data はカラー関係の
テーブルのようなものでしょうかね ??


2002-08-19 (月)

プリプロセスのみ [C]

2002-08-19-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

gcc でプリプロセッサだけを走らせてコンパイルはしたくないときは
'-E' オプションを付ければよい。


2002-09-03 (火)

型変換 [C]

2002-09-03-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

from himi

C言語では、
P +- P -> I
P +- I -> P
が、型変換として保証されているので、pointerはpointerのまま、増減の分だけ
integerとして計算すればよろしい。(Pはpointer, Iは整数型)


2002-10-01 (火)

外部変数のアドレスが決まるタイミング [C]

2002-10-01-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

static な外部変数はコンパイル時、
extern な外部変数はリンク時にアドレスが決定される。


2003-01-07 (火)

トライグラフ [C]

2003-01-07-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

warning: 6 trigraph(s) encountered

??で始まる文字列はプリプロセッサによって置換される可能性がある。K&R P287参照。


2003-03-01 (土)

enumの最後の `,' [C]

2003-03-01-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

[mew-dist 18862]
enumの最後の `,' は K&R では "ない" のが正解。
しかし、C99d に対応したコンパイラ(例: GCC 2.96以降)では OK。
関連URL => プログラミング言語 C の新機能 <http://seclan.dll.jp/c99d/c99d00.htm>


2003-03-27 (木)

C プログラマが知る C++ の性質 [C]

2003-03-27-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

http://www.hi-ho.ne.jp/hawk/cpp.html


2004-09-29 (水)

関数の引数に文字列があると、BSS 領域に取られるようだ [C]

2004-09-29-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

printf() を削除したときに BSS のサイズが減っていて気づいた。


2004-12-10 (金)

C言語で、小数の小数部分だけを抜き出す方法 [C]

2004-12-10-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

その1

float shousuu, zenbu = 1.5;
shousuu = zenbu - (int)zenbu;



その2

#include <math.h>
float zenbu = 1.5, seisuu, shousuu;
shousuu = modff(zenbu, &seisuu);



2006-05-25 (木)

データ型のサイズ [C]

2006-05-25-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

char=1byte固定
(整数型)
short int <= int <= long int
short int は short と記述可能
long int は long と記述可能
(実数型)
float <= double <= long double

(URL: http://www9.plala.or.jp/sgwr-t/c/sec13.html)


2006-12-19 (火)

const の位置 [C]

2006-12-19-1.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

(1) const int *p;
(2) int *const p;
(3) int const *p;

(1) は const int なので、*p が read only になる。
(2) は *const なので、p が read only になる。
(3) は (1) と同じ。


2009-03-14 (土)

同一ネットワーク上のマシン同士でのプロセス間通信 [UNIX][C]

2009-03-14-2.html をつぶやくこのエントリを含むはてなブックマークlivedoor clip

以下の Web site にサンプルソースとともに簡潔にまとめられていた。
素晴らしい。
(URL: http://www.ueda.info.waseda.ac.jp/~toyama/network/example2.html)

▼以下のマシンでテストした。
サーバ -> Cygwin on WindowsXP
クライアント -> Debian GNU Linux squeeze (testing)

▼make 時の注意
- Debian では libsocket が見つからなくてリンクエラーになった。
Linux では不要らしいので、Makefile 中の -lsocket を削除した。
- Cygwin では libsocket と libnsl が見つからなくてリンクエラーに
なった。両方とも cygwin1.dll に含まれているらしいので、Makefile 中
の -lsocket と -lnsl を削除した。

▼テスト
- Cygwin で iserver.exe を実行し、クライアントからの通信待ち受け状
態にした。
- Linux で iclient を実行した。そのまま文字列を打ち込んだら、大文字
に変換されて表示された。成功!

▼補足
- 大文字への変換は iserver.c の toupper() で行っている。iclient は
標準入力から受け取った文字列をサーバに送り、送り返された文字列を
printf() しているだけ。


カテゴリ「C」最新ページ / 1 2 次ページ / page 1 (2)

最終更新時間: 2010-07-27 06:00

フィードメーター - マスタカの ChangeLog メモ