タグ

cに関するizariuo440のブックマーク (33)

  • GitHub - cesanta/v7: Embedded JavaScript engine for C/C++

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - cesanta/v7: Embedded JavaScript engine for C/C++
    izariuo440
    izariuo440 2015/07/30
    C の JavaScript エンジン
  • 標準Cライブラリの実装 stddef.h

    今回は、標準Cライブラリにおける共通定義を行う<stddef.h>についてお話します。<stddef.h>は、標準Cライブラリのヘッダの中でも、最も処理系に依存するものです。さらに、C++にも対応するとなると、いろいろ面倒なことをやらなければなりません。 まずは、size_t型からです。size_t型はsizeof演算子の結果の型ですので、意味的には、gcc拡張である__typeof__を使って、 typedef __typeof__(sizeof(int)) size_t; とするのが妥当かと思います。ただ、__SIZE_TYPE__というマクロが予め定義されていますので、今回は、 typedef __SIZE_TYPE__ size_t; としたいと思います。なお、size_t型は、<stddef.h>以外のいくつかのヘッダでも定義されていますので、次のように二重定義のガードを行います

    izariuo440
    izariuo440 2012/03/17
  • 定義済みマクロ - redstrange Wiki*

    標準規格 C言語 __DATE__ ソースのコンパイル日付 __FILE__ ソースのファイル名 __func__ 関数名(Visual Studio.NET以降では、__FUNCTION__) __LINE__ 行番号 __STDC__ 標準Cに従っている際に定義されている(ifdefで使う) __STDC_HOSTED__ 整数1 __STDC_IEC_559__ IEC60559浮動小数点仕様に従っている際に定義されている __STDC_IEC_559_COMPLEX__ IEC60559互換の複素数仕様に従っている際に定義されている __STDC_ISO_10646__ ?→http://seclan.dll.jp/c99d/c99d02.htm#dt19990412 __STDC_VERSION__ C言語のバージョン __TIME__ ソースのコンパイル時刻 __TIMESTA

    定義済みマクロ - redstrange Wiki*
    izariuo440
    izariuo440 2012/03/17
  • 32bit/64bit 両対応な printf の書き方 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    32bit/64bit両対応のコードを書いていると,よく printf() で引っかかります."%d"のような"書式"がややこしいからです. というわけで,変数の"型"と"書式"の対応を,表で整理してみました. 型 書式 注意事項 ssize_t %zd size_t %zu intmax_t %jd uintmax_t %ju ptrdiff_t %t signed char %hhd unsigned char %hhu short int %hd unsigned short int %hu int %d unsigned int %u long int %ld unsigned long int %lu long long int %lld unsigned long long int %llu int32_t %PRId32 以下,#include が必要(下記参照) uint3

    32bit/64bit 両対応な printf の書き方 - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • OTCC : Obfuscated Tiny C Compiler

    What is it ? The Obfuscated Tiny C Compiler (OTCC) is a very small C compiler I wrote in order to win the International Obfuscated C Code Contest (IOCCC) in 2002. My goal was to write the smallest C compiler which is able to compile itself. I choose a subset of C which was general enough to write a small C compiler. Then I extended the C subset until I reached the maximum size authorized by the co

    izariuo440
    izariuo440 2011/07/05
    ちっちゃすぎだろこれ。
  • CMPH - C Minimal Perfect Hashing Library

    Motivation A perfect hash function maps a static set of n keys into a set of m integer numbers without collisions, where m is greater than or equal to n. If m is equal to n, the function is called minimal. Minimal perfect hash functions are widely used for memory efficient storage and fast retrieval of items from static sets, such as words in natural languages, reserved words in programming langua

  • C99じゃないコンパイラで、可変引数付きデバッグ用マクロを定義する例 - ふにゃるんv2

    余談ですが、C99では可変引数マクロ(__VA_ARGS__)という、今まで渇望されていた機能が搭載されています。 つぅか、__VA_ARGS__マクロの説明って、必ずデバッグ用に紹介されるんですよね。まぁ、当然ですけど。 とはいえ、C99に対応してないコンパイラってのも結構ある訳で。 じゃぁ、どうすんだ?と。 自分がデバッグ用マクロを定義する際に良く使うパターンを、以下にメモ書きしておきます。 #include <stdio.h> #include <stdarg.h> #include <assert.h> #define DBG dprintf("%s %d : ", __FILE__, __LINE__),dprintf #define D printf("%s %d : ", __FILE__, __LINE__),printf int dprintf(const char* f

    C99じゃないコンパイラで、可変引数付きデバッグ用マクロを定義する例 - ふにゃるんv2
    izariuo440
    izariuo440 2011/03/09
    __VA_ARGS__ が使えない場合のテク。
  • ちゃらっと書いてみたBase64エンコードのソース(C言語) - ほんまの走り書き技術メモ

    とりあえずまともに書いたらこんな感じかな?? プログラム引数に文字列を指定すると、Base64文字列を出力してくれる。 ソース #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char *w = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; unsigned char *p = argv[1], *buff; int i = 0, x = 0, l = 0; buff = (char *)malloc((strlen(p) * 4 / 3 + 3) & ~0x03 + 1); for (; *p; p++) { x = x << 8 | *p; for (l += 8; l >= 6; l -= 6) {

    ちゃらっと書いてみたBase64エンコードのソース(C言語) - ほんまの走り書き技術メモ
  • C言語で作成されたWebSocketライブラリ·cWebsocket MOONGIFT

    cWebsocketはC言語製のオープンソース・ソフトウェア。HTML5の数ある機能の中で、最も可能性を秘めているものと言えばWebSocketではないだろうか。これまでのHTTP/HTTPSとは違う、コネクションを張り続ける接続が可能になる。 Google Chromeから接続してメッセージを送信しているところ コネクションを張り続けるため、これまでのApacheではコンセプトが異なっている。他のWebサーバにとっても、これは大きなチャンスになるだろう。WebSocketだけ効率的に提供するサーバも増えるだろう。その手助けになり得るのがcWebsocketだ。 cWebsocketはC言語で書かれたシンプルなWebSocket実装となっている。ライブラリとして提供されるので、他のWebアプリケーションサーバなどはcWebsocketを読み込んで実装する形になるだろう。サンプルとしてメッセ

  • CUnit チュートリアル

    CUnit とは、C言語開発において単体テストを支援する 「テスティング・フレームワーク」です。 もちろん、きちんとした設計者であれば、 CUnit のような仕組みがあろうと無かろうと、 自分で作った分の設計者テストは言われなくても実施するでしょうし、 組織としてきちんとしていれば、すでに何らかの仕組みは構築しているでしょう。 ですが、もし今まで単体テストをチーム内の各設計者が バラバラに実施していたということであれば、 CUnit を試してみる価値はあります。 また、XP(eXtreme Programming) のようなスタイルを構築したいと思っているのであれば、 CUnit を必須、としてしまうのも一つの手です。 ここでは、Cygwin 環境に CUnit をインストールして使ってみます。 導入 テスト環境の概説 使ってみよう アサート・マクロ テスト・レジストリ テスト・スイート

  • インライン関数 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "インライン関数" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2017年10月) インライン関数(英: inline function)とは、プログラミング言語の言語機能および構文の一種で、コンパイラに対して特定の関数をインライン展開するよう指示するものである。つまり、コンパイラに対して、その関数を呼び出している全ての箇所に関数の実体を挿入するよう指示する。 インライン展開は、関数呼び出しにかかるオーバーヘッドを無くす目的で行われる。一般に関数の処理内容自体が非常に小さくオーバーヘッドの割合が無視できない場合に使われる。非常に小さい

  • リングバッファ - Wikipedia

    リングバッファの概念図 実際のリングバッファ リングバッファ (英: ring buffer)、サーキュラーバッファ (英: circular buffer)、または環状バッファ(かんじょうバッファ)とは、リング状に配置されたバッファである(図を参照)。一時的にデータを貯めておくバッファ領域のうち、終端と先端が論理的に連結され、循環的に利用されるようになっている。最も古い内容を最新の内容で上書きし、常に一定の数の過去までのデータを蓄えるような用途に用いられる[1]。 バッファは一般的にメモリ空間効率の高い配列を使って実装されるが、配列を物理的にリング状に配置することはできないので、インデックス(添え字、添え数)をバッファサイズで割って剰余を取る正規化をし、一定の範囲に限定することで、直線状のバッファの両端を論理的に繋げる。正規化により、インデックスがバッファの最後を超えると最初に戻り、また

    リングバッファ - Wikipedia
  • Circular buffer - Wikipedia

    A ring showing, conceptually, a circular buffer. This visually shows that the buffer has no real end and it can loop around the buffer. However, since memory is never physically created as a ring, a linear representation is generally used as is done below. In computer science, a circular buffer , circular queue, cyclic buffer or ring buffer is a data structure that uses a single, fixed-size buffer

    Circular buffer - Wikipedia
  • JavaはCより速かった — ありえるえりあ

    http://blog.liris.org/2009/03/java.html 仕事をせずに遊んでいる人のコードを、家のJava(Java6)で試してみました。 シェルで動かして、グラフはgnuplotです。ハイテク満載です。 $ seq 1 100 |xargs -n 1 java test |tee /tmp/java-cl.out $ seq 1 100 |xargs -n 1 java -server test |tee /tmp/java-sv.out 横軸は同時スレッド数、縦軸が時間(ミリ秒)です。要は低い方が速くて優秀です。 クライアントVMとサーバVMの差がすごいです。と言うか、サーバVMが優秀すぎます。と言うか、サーバVMの数値は変です。トータルでまわるループ数が線形に増えているはずなのに、処理時間があまり増えていません。 試しにと思って、Cのコードと比較してみました(コ

    izariuo440
    izariuo440 2009/03/08
    そんなばかな・・・
  • Microsoft が提供する C/C++ ヘッダファイルにおける事前条件・事後条件の充実っぷりは異常 - NyaRuRuが地球にいたころ

    ぴーびーしー - 東方算程譚 ふむ. むしろ Microsoft の開発現場で,一番 DbC が流行っているのが Visual C++ 関連だと思うのですが.Header Annotations とか SAL Annotations,C/C++ コード障害の検出と修正 等. 最近の Visual C++ のインクルードファイルや Windows SDKs 以下のインクルードファイルを見ていても,事前条件・事後条件の充実っぷりは異常.その規模は既に COM 全盛期の IDL を凌ぎます. あれは手で書いているんでしょうかねぇ? 何か DSL から C/C++ のヘッダファイルを自動生成していてもおかしくない気もしますが,はて. 整数範囲注釈 そういえば Visual C++ 2008 SP1 のコード検証は,Header Annotations の整数範囲注釈を活用していないように見えるので

    Microsoft が提供する C/C++ ヘッダファイルにおける事前条件・事後条件の充実っぷりは異常 - NyaRuRuが地球にいたころ
  • Splint Home Page

    Secure Programming Lint SPecifications Lint First Aid for Programmers Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.

  • 高度プログラミング演習(九州大学全学共通教育科目)の説明資料

    実践プログラミング CとC++プログラミングに関するいくつかの例題と解説. 単なるプログラミングテクニックや文法の解説ではなく, 背後にある考え方の習得(アルゴリズム,データ構造,数学など)を重視して いる. プログラムをじっくり眺めそこから技法を学び取る. 最大値 [HTML] 曜日の計算 [HTML] 平均値,分散 [HTML] 2次方程式の解 [HTML] 最小自乗法 [PPT], [HTML] 待ち行列シミュレーション [PPT], [HTML] アーランの即時式モデル [PPT], [HTML] 行列のLU分解 [PPT], [HTML] ニュートン法による非線型方程式の解 [PPT], [HTML] 数値積分 [PPT], [HTML] 2分探索木 [PPT], [HTML] ヒープソート [PPT], [HTML] クイックソート [PPT], [HTML]

  • http://www.sra.co.jp/Rational/purify/purify.html

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • C(++)言語: valgrindの使い方

    ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) 目次 Valgrindに含まれるツール Memcheck: メモリエラーを検出する(default) Cachegrind: キャッシュミスを検出する Massif: ヒーププロファイラを使う まとめ valgrindの使い方とエラーメッセージを整理してみた。「valgrind --leak-check=full command」というコマンドラインをよく用いる。これによりメモリ周りのバグを検出出来る。 --tool=cachegrindではプログラム実行時のキャッシュミス率を測定する事が出来る。cg_annotateを