タグ

Programmingとconstに関するoka_Elizabethのブックマーク (3)

  • volatileで最適化を抑制する - 職業としてのプログラミング

    C言語やC++,Javaにはvolatileという修飾子があります。組み込み系ソフトウェアやマルチスレッドのアプリケーションを書いている方にとっては、なじみ深い存在ですが、そうでない方にはあまり縁がないのかもしれません。しかし、volatileの使い方や存在意義を知らないままコーディングを行うと、思わぬバグを引き起こす場合があります。今回は、そのvolatileキーワードについて簡単に説明したいと思います。 volatileは初期のCであるK&Rには含まれていませんでしたが、ANSI C(C89)以降のC標準規格にはconstと一緒に含まれるようになりました(constとvolatileをあわせてcv修飾子と呼ぶこともあります)。一般的なCなら必ず備えている修飾子です。 volatile修飾子の意味ですが、「プログラミング言語C ANSI規格準拠」によると、 volatileの目的は,黙っ

  • strtok

    文字列を区切り文字で分解する 【書式】 #include <string.h> char *strtok(char *s1, const char *s2); 【説明】 分解対象文字列 s1 を、文字群 s2 中の文字を区切りに字句(トークン)に分解します。 次のような手順で strtok() を用いて文字列をトークンに分解することが出来ます。 最初の呼び出しでは s1 には分解対象の文字列を指定します。トークンがあれば、strtok() はトークンへのポインタを返却します。 2回目以降の呼び出しでは s1 に NULL を指定します。分解できるトークンがあるうちは、strtok() はトークンへのポインタを返却します。 トークンがなくなると strtok() は NULL を返却します。 strtok() はトークンへのポインタを返却しながら、分解対象文字列 s1 中の区切り文字に空文字

  • memcmp

    n バイトメモリブロックの比較 【書式】 #include <string.h> int memcmp(const void *buf1, const void *buf2,size_t n); ※ void * についてはこちらを参考 【説明】 buf1 と buf2 を先頭から n バイト分比較します。比較はunsigned char として行われます。memcmp() は buf1 と buf2 をメモリブロックとして扱うため、途中に空文字('\0')を含んでいても比較を続けます。 【引数】 const void *buf1 : 比較元メモリブロック1 const void *buf2 : 比較元メモリブロック2 size_t n : 比較バイト数 【戻り値】 正 : buf1 > buf2 0  : buf1 = buf2 負 : buf1 < buf2 【使用例】 #includ

  • 1