タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

cに関するwillnetのブックマーク (6)

  • PRE10-C. 複数の文からなるマクロは do-while ループで包む

    PRE10-C. 複数の文からなるマクロは do-while ループで包む 複数の文を一つのグループとして実行するために、マクロがよく使われる。 この手の仕事には、一般にインライン関数の方が適している(「PRE00-C. 関数形式マクロよりもインライン関数やスタティック関数を使う」を参照)。しかし、インライン関数を使えない場面もある(たとえば、異なる型の変数に対する演算を行うときなど)。 マクロの中に複数の文が含まれている場合、これらの文は do-while ループで構文的にひとまとめにしておくべきである。そうすることで、if 節の中など、単一の文や文のブロックが期待される箇所において、安全にマクロを使うことができる。あるいは、if文、for文、while文において、体が単一の文であっても波括弧を使用することで、マクロ中の複数の文は do-while ループを使わなくても正しく展開される

    PRE10-C. 複数の文からなるマクロは do-while ループで包む
    willnet
    willnet 2018/07/29
  • いまさらC言語のexternで悩む – ビットログ

    とある製品のソースコードを眺めていたときに疑問に思って調べたことをメモします。 C言語で通常、大域変数(グローバル変数)を複数のソースファイルで共有する場合、共通でincludeするヘッダファイルにextern int abc;みたいに書いて、ソースファイルのいずれか1つに実体をint abc;みたいに書くと(私は)思っていたのですが、その製品のソースではヘッダファイルの方にint abc;とあり、各ソースファイルにextern int abc;という風に書かれています。 一瞬、それぞれのモジュール(ソースファイル)に別々の実体が存在するのかな、と思ったのですが、実際のその製品の動きを見てみるとちゃんと変数を共有して使っているようです。 私のいままでの理解が間違っているかもしれないので調べようと思ったのですが、C言語の規約を調べるのも億劫だし、環境依存かもしれないので、とりあえずサンプルを

    willnet
    willnet 2017/10/08
  • C言語 - Wikipedia

    構造化プログラミングのパラダイムに対応した高水準の手続き型言語である。ハードウェアの直接的な制御ができる機能を備えつつ、機械語やアセンブリ言語(アセンブラ)のような低水準言語と比較して、ソースコードの再利用性やメンテナンス性に優れており、目的に応じたプログラムの変更や拡張が容易である。 汎用性およびプログラムの自由度が高く、リソースや性能要求の厳しい用途にも耐えうるため、アプリケーションソフトウェアの開発だけでなく、オペレーティングシステム(OS)やデバイスドライバー、ファームウェアの記述、マイコン制御・機械制御など、上位層・下位層を問わず、あらゆる分野で利用されている。 対応する機器の範囲が広い。パーソナルコンピュータやワークステーションはもちろん、自動車や家電の組み込み用マイコンからスーパーコンピュータまで、C言語を使用できるハードウェアは多様である。そのため、C言語のコード資産が蓄積

    C言語 - Wikipedia
    willnet
    willnet 2012/06/04
  • C言語のincludeについて質問です。1.#include<~.h>2.#include"~.h"1と2の違いって何です... - Yahoo!知恵袋

    C言語のincludeについて質問です。 1.#include <~.h> 2.#include "~.h" 1と2の違いって何ですか?

    C言語のincludeについて質問です。1.#include<~.h>2.#include"~.h"1と2の違いって何です... - Yahoo!知恵袋
    willnet
    willnet 2012/06/04
    #include "...." とするとカレントディレクトリを最初に検索する
  • #ifdef と #ifndef と ヘッダーを書くときの定石 - y_tsuda's blog - s21g

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

    willnet
    willnet 2012/03/14
  • netswitch! | RubyInlineがすごい

    Posted by nanki Mon, 12 Mar 2007 05:14:00 GMT Rubyコード中にCのコードを埋め込めるRubyInlineを使って、 ボトルネックとなっているメソッドを置き換える。 # rubyinline.rb def benchmark s = "a" * 10000 test = Test.new t = Time.now 1000.times{test.string_xor(s, s)} Time.now - t end class Test def string_xor(str1, str2) result = str1.clone str1.length.times do |i| result[i] ^= str2[i] end result end end b1 = benchmark begin require 'inline' class T

    willnet
    willnet 2008/05/20
    rubyの中にCが書けるgem
  • 1