C

初心者に

C

やさしいCの本てなんだろ?独学でほとんど来たからな。

3文字表記

MISRA-Cを読んでて知ったのだが…C言語に3文字表記なるものがあるらしい… 使い道が分からないが ??- は ~に置き換わる。なんでこんなものが実装されているのか?謎だ。これが実装された歴史的背景が気になる…

MISRAルール10

MISRAルール10と言ってもなんだかわからないが…

昨日の

問題は単純に宣言のない関数呼び出しのため起こるバグだった。… 宣言がないくせにコンパイル通る時点で使えないな、 もっと良いコンパイラが欲しい。

defineとextern

C

定義をするdefineと 外部シンボルとリンクするextern.まさかこんな使い方ができるとは知らなかった。

MISRA-Cとは

C

ECU(Electronic Control Unit)の品質向上を目指した,C言語プログラミングの ガイドライン.品質システムの解説と127個のプログラミング標準から構成される. 自動車会社がスポンサーなので自動車用と銘打っているが,C言語プログラミングの 品質向上ガイド…

MISRA-C

C

会社でネットサーフィンをしていたらMISRA-Cというのに出会った。簡単に言うと組み込み向けのC言語のコーディング規約集っぽい。昔からあるらしいんだけど全然知らなかった…

スコープ

C

ローカル変数を宣言する場合、普通。 void func(){ int a; a=1; }と書く。でもたまに void func(){ int a; { int b=10; a=b; } }計算は適当だけどこういう書き方をする時がたまにある。もちろん一番内側の{}から外には変数bは見えないので注意が必要。C++…

C99

C

C言語の新標準規格であるC99。 存在は知っていたけど、 詳しくはあまり知らなかったりする。プログラミング言語 C の新機能機能はおいおい勉強するとして、 テスト環境何使えばいいんだ?完全対応したコンパイラってどれだろ?GCCとかVCとかBCCなら対応して…

void *

C

良く使う?void * 当り前だが、void * a, *b; *a = *b;すると怒られる。 *(int *)a = *(int *)b; とか *(int *)a += *(int *)b;なら、まぁ大丈夫。 じゃぁ、aとかbのポインタの先がfloatだったらどうだろう。void *a, *b; float c=1.0 ,d=2.0;a=&c; b=&d; *(…

データ

c

当り前だが、データはconstであるべき。だが、手作業でデータを作成する場合は、 constを忘れることが多い。解決策として、1.データは全部ツールで作る。 2.すべての型をtypedefでconstを内包したものにする。1はまぁ問題無い。2の場合、代入等を行う…

関数ポインタ

C

検証した結果。やっぱり、typedef const void * const ( * const func)(void);でfunc型の関数ポインタはconstになるっぽい。

const

C

関数ポインタはvoid (*func)(void);普通こうか。じゃぁ、 const void * const (*func)(void);はconst void * const を返す関数ポインタか。んじゃ、その関数ポインタをconst にしたい場合は…普通は typedef const void * const (*_func)(void); typedef cons…