C

ローカルスコープで関数を宣言する場合

C

ローカルスコープで関数を宣言する場合、extern以外の明示的な記憶域クラス指定子を持ってはならない。

C/C++用のMakefile

こちらを参照しながらバッと書いたもの。 設定エリアの変数値を変更してバイナリファイル名やソースディレクトリ、コンパイラやそれに渡されるオプションを設定する事が出来ます。 coption はコンパイルオプションの、 loption はリンクオプションの略。 # =…

fgetsメモ

C

終端(EOF)に達した場合、1文字でも読み込まれていたのなら、改行文字を読まずとも成功したものされる。 その場合は文字列バッファに改行文字が含まれないので、 feof 関数を使用してファイル終端による終了か区別する必要がある。 終端に達し、かつ1文字も読…

C/C++ 厳密な別名付け

C C++

この記事を読んでメモ。 明らかにおかしな参照やポインタのキャストによるアクセスはコンパイラの最適化によって無視される可能性があるよって話。 uint32_t f(uint32_t a) { uint16_t *p = &a; // uint16_t は uint32_t の別名とはなり得ない // p は a を…

構造体/クラスの多重定義エラーは1つの翻訳単位内で起こる

C C++

C/C++ の入門サイトや入門本でインクルードガードの説明に「構造体/クラスの多重定義を避けるため」とあるが、 main.c と sub.c でインクルードされたらどうしようもなくね?という疑問が残るだろう。 多重定義エラーはコンパイル時に起こるものなので、例え…

多重ポインタとconst

C C++

C/C++でのポインタ変数はアスタリスクとconstの位置関係によって「何が」constかが変わってきます。 例えばint型ポインタ変数の書き方は以下の様に4種類存在します。 - - - - *p = value p = pointer int * o o int const * x o int * const o x int const *…

DXライブラリってユーザー定義の画像読み込み関数が使えるんだよ

DXライブラリ公式が対応した画像フォーマット以外読み込めないものだと思っていたが、そんなことはないらしい。 DXライブラリのソースコードを読んでいたところ、以下の関数を発見した。 extern int AddUserGraphLoadFunction4(int(*UserLoadFunc)(STREAMDAT…