タグ

Cに関するblueleのブックマーク (53)

  • Big Sky :: API が小さい埋め込み向け JavaScript エンジン v7

    埋め込み向けで、C言語から呼べて API が小さい JavaScript エンジン v7 を見つけました。 cesanta/v7 · GitHub https://github.com/cesanta/v7/ 特徴としては クロスプラットフォーム: Arduino から MS Windows まで、どこでも動く。 小さい: コンパイルされたコアはわずか 40KB から 200KB。 シンプルで直観的な C/C++ API: 簡単に C/C++ の関数を JavaScript 環境へエクスポート出来る。 標準: V7 は JavaScript 5.1 を実装し、Standard ECMA tests をパスする事を目指している。 パフォーマンス: V7 は非 JIT エンジンの中で最速を目指している。 創造的に利用可能: V7 は、ハードウェア(SPI、UARTなど)、ファイル、暗号化、ネッ

    Big Sky :: API が小さい埋め込み向け JavaScript エンジン v7
    bluele
    bluele 2015/08/15
  • Big Sky :: clib の使い勝手にマジ感動した

    C言語でアプリケーションを書くのは他の言語と比べて少し気合が必要ですよね。例えば HTTPからデータを取得する 取得したデータを json パースする 結果の一部を色付きで表示する こんな場合、C言語プログラマは 「HTTP か、じゃぁcurlかな」 「JSON か、parson かな」 「色表示か...エスケープシーケンスでもいいけどWindowsがなー...」 といった事を考え、そこから curl や parson といった資材の調達を始める事になります。途中で新しい機能を追加したくなり、それを外部ライブラリに頼る場合だとその都度資材を調達する必要があり、思考を停止しなければなりません。 この辺は rubyperl、nodejs、golang 等の様に、ちょっとした手間だけで済ませたい物です。 またC言語の場合、ヘッダファイルはシステムの include フォルダに提供元が期待す

    Big Sky :: clib の使い勝手にマジ感動した
    bluele
    bluele 2014/06/28
  • 実践 C 拡張モジュール開発

    PyCon APAC 2013 実践 C 拡張モジュール開発

    実践 C 拡張モジュール開発
  • GCC 4.8でぶっ壊れるSPECのお粗末なコード

    の虫: GCC 4.8のリリースノートとC++関連の変更で、GCC 4.8は464.h264ref: SPEC CPU2006 Benchmarkを壊してしまう。これはSPECベンチマークの規格違反によるものであると書いた。では、具体的に何なのか。それを解説している記事を発見したのでかいつまんで紹介。 Embedded in Academia : GCC pre-4.8 Breaks Broken SPEC 2006 Benchmarks Regehr: GCC 4.8 Breaks Broken SPEC 2006 Benchmarks [LWN.net] どうやら、SPECベンチマークは以下のようなコードを含むそうだ。 int d[16]; int SATD (void) { int satd = 0, dd, k; for (dd=d[k=0]; k<16; dd=d[++k])

    bluele
    bluele 2013/03/27
  • C言語入門::ビット演算色々 - binzume.net

    一方のみが「1」のときに「1」. C言語での使い方 普通の加減乗除等の演算子と同じように使えます. x = 142 | 98; C言語では複数ビットをまとめて扱います.例えば,char型の値の演算では,8個の 0 または 1 の数値に対して同時に演算します. 142 | 98を計算してみましょう. 二進法で表記すると, 10001110 | 01100010 です. 筆算風に計算すると, 10001110 | 01100010 -------------- 11101110 となり,「11101110」が求まります.これは,10進表記した「238」と同じです. つまり,上記の文のあとで,xの内容を表示すると,238になっているはずです. シフト 指定しただけ,ビットをシフトします. 右シフト(>>) と 左シフト(<<)があります.演算時のビット数からはみ出た部分は捨てられます. 例:12

    bluele
    bluele 2012/11/25
    bit
  • その記憶が頭から離れません。 - 質問・相談ならMSN相談箱

    bluele
    bluele 2012/11/24
    array vector
  • Make と Makefile の説明

    まだ完成途中です back 注意: このページの内容には、おそらく多くの間違いがあります。 リンクされているので残しておきますが、利用には注意してください。(2008年3月、新山) ここではおもに make の使い方 と Makefile の書き方について 説明しています。じつは make の種類にはいろいろあり、ここでは GNU make (gmake というコマンド名のこともある) を 対象にしています (BSD の pmake でも基的な部分は同じですが、 マクロ定義などは違うところもあるので注意してください)。 わかりにくい箇所とか、まちがってる箇所がある場合はメールください。 Contents make はどんなときに使うか Makefile を作る make の実行 Makefile の文法リファレンス 多段 make について (未完成) Makefile の例 (未完成)

  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

  • ポインタ虎の巻

    ポインタ虎の巻 初級篇~ポインタはなぜ難しいか? C言語を学ぶ上で、ほとんどの人が引っかかり、往々にCの勉強を放棄するきっかけとなるのがポインタである。しかし、ポインタはC言語という特定のプログラム言語だけではなく、コンピュータというものを理解する上で、必要不可欠な重要な機能である。C言語参考書では、ポインタを解説する上で「箱」のモデルを使って解説することが多いが、この虎の巻では、より突っ込んだ具体的な動作を解説することでポインタというものの質を解明して見ようと思う。参考書ではC言語の抽象レベルの上で解説がされるのが通例だが、虎の巻では単純化されたアセンブリ命令を使って具体的に解説する。 初級篇目次 変数とは何か? 疑似アセンブリの定義 文字列の処理 アドレスの取得 ポインタの型 関数呼び出しの手法 構造体とポインタ リスト構造 NEW 二進木 NEW 中級篇~ポインタの高度な技 ポイン

    bluele
    bluele 2012/07/22
  • ポインタ配列とダブルポインタ変数の違いを理解していないプログラマー|SGソフトウェアの開発日記(鉄道ゲーム開発もしてますが最近はDLNAがらみの開発中心)

    SGソフトウェアの開発日記(鉄道ゲーム開発もしてますが最近はDLNAがらみの開発中心) ハードディスク故障に備えるための省スペースデータ保護ツール「RAIDっぽい」や、DVD-RAM用コピーツール「VRストリーム抽出ツール」など、各種ツールの商品開発の日々の出来事や、よもやま話などを綴っています。 PR SG箱庭鉄道線路を敷いて列車を走らせよう! SG箱庭鉄道 PCユーティリティファイル名の番号の桁を揃える 整列! マルチドライブ高効率バックアップ RAIDっぽい 保管期限切れのファイルを一括削除 保管期限切れファイルクリーナー まとめてファイルを移動 ファイル移動ツール ファイルの重複を検出 ファイル重複検出ツール サブフォルダ内のファイルを集約 サブフォルダ内ファイル集約ツール 空のフォルダーを削除 空フォルダー削除ツール ホームネットワーク複数のMPE

    bluele
    bluele 2012/07/22
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
    bluele
    bluele 2012/07/22
  • UMLの状態遷移図をC言語のStateパターンで実装&単体テストしてみる - katono123’s diary

    UMLの状態遷移図(ステートマシン図/ステートチャート図)の実装 サンプルとして、こちらの図11を実装した。 http://labo.mamezou.com/special/sp_002/sp_002_003.html 最上位の状態は「停止中」と「運転中」の2つの状態。「運転中」はコンポジット状態(入れ子のある状態)であり、サブ状態として「冷房」「暖房」「除湿」の3つの状態を持つ。 最上位の初期状態は停止中で、サブ状態の初期状態は冷房。ただし、運転中から停止中に戻る時にサブ状態は記憶され、次回運転中状態になった時は前回のサブ状態になる。 イベントは「運転開始」「運転停止」「運転切替」の3つ。 状態遷移図を実装する方法で一番簡単なのは、状態変数をswitch文で分岐する方法だと思うけど、ここではGoFのデザインパターンのStateパターンを参考にして実装してみた。 ソースのリポジトリは以下。

    UMLの状態遷移図をC言語のStateパターンで実装&単体テストしてみる - katono123’s diary
    bluele
    bluele 2012/07/16
  • やはりCのポインタは難しいものだ…… - 神様なんて信じない僕らのために

    ポインタと配列は一緒のもの? 違うよ、全然違うよ。 前に、同じ年の人が一時的に今の職場に来て、C言語できる。というから、ポインタと配列の違いが解かります?って聞いたら 「え?ポインタも配列も同じじゃないっすか。」 と言われた。 そうだよね。理解してる人に取っては、特に何でもないものなんだと思う。 char szMsg1[]; char *szMsg2; という宣言があったら、 C言語のポインタを理解している人に取ってはszMsg1 とszMsg2 は同じ物じゃないだろうか? なんか、前もこんな話があったような気がするけど、これらは全然違うよ。 少なくとも「ポインタ変数」は対象となる変数の場所(アドレス)を格納可能な変数であり、 「配列変数」は配列の領域を確保し、配列としての名前を持つ変数である。 ポインタは代入可能だが、配列名に対し代入することはできない。 また、配列は関数に渡すこともでき

    やはりCのポインタは難しいものだ…… - 神様なんて信じない僕らのために
    bluele
    bluele 2012/07/10
  • 参照とポインタ

    この文章はプログラマでもプログラミング言語の専門家でもないただのプログラミング好きの私が適当に書きつづったものです。よってこの文章には正しい箇所もあるでしょうが、間違っている箇所もかなりあるはずです。ご指摘いただけたらと思います。また、この文章を読んでも内容を鵜呑みにしないでください。鵜呑みにした結果何か起きても知りません。 "諸悪の根元"-ポインタ Cの特徴の1つとして、また初心者が必ずつまずく(*)とされる難所としてポインタがあげられるわけだが、ポインタはどうも最新流行のプログラミング手法の中では諸悪の根元として忌み嫌われているようだ。 (*) 自慢するわけではないのだが、私は別にポインタでつまずいた記憶はない。もちろん、効果的な使い方などはその後いろいろなコードを読んでいく中で身に付いていったわけだが。 ポインタは確かに諸刃の剣である。非常に便利な反面、危険でもある。例えば次のような

    bluele
    bluele 2012/05/02
  • Amazon.co.jp: Cプログラム高速化研究班 コードを高速化する20の実験と達人の技: 片山善夫: 本

    Amazon.co.jp: Cプログラム高速化研究班 コードを高速化する20の実験と達人の技: 片山善夫: 本
    bluele
    bluele 2012/03/30
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • C言語における文字列連結 — KaoriYa

    C言語で文字列連結を行う。とても簡単に思えるけれど、実はパフォーマンスについて考えることもあるんだよ、というお話。 C言語で2つ文字列の連結して、1つの文字列にするプログラム(関数)を書けるでしょうか? ちょっとC言語でプログラミングを学んだことがあれば簡単ですよね。要求仕様としては2つの引数aとbをとり、どちらもNULターミネートな文字列で、その文字列をヒープから確保した領域で連結して戻り値として返す、という感じの動作です。ヨユーですね。ちょっと書いてみてください。 char* str_join(const char* a, const char* b) { char* p = malloc(strlen(a) + strlen(b) + 1); strcpy(p, a); strcat(p, b); return p; } こんな風に書いてしまったあなたは及第点です。個人的には失格です

  • C言語の正しいヘッダファイルの書き方 - saito’s blog

    最近、仕事でC言語での組み込み系の開発に携わっています。 開発中のコードを眺めていると、ヘッダファイル内にstatic関数のプロトタイプ宣言を記述していたり、ヘッダファイル内で不必要に他のヘッダファイルをインクルードしているなど、ヘッダファイルの書き方が分かっていないと思われる箇所が多々見られました。 実際、C言語の入門書でもヘッダファイルの書き方を詳しく説明しているものは、僕の知っている限りでは存在しないので、C言語を使っていてもヘッダファイルの正しい書き方を知らない人が少なくないのではないかと思われます。 そこで、このエントリでは、C言語のヘッダファイルの書き方について、僕が知っているテクニックをまとめてみました。 インクルードガードを書く ヘッダファイルファイルで他のヘッダファイルをインクルードしていると、いつの間にか同じヘッダファイルを2回インクルードしてしまうことがあります。 例

    C言語の正しいヘッダファイルの書き方 - saito’s blog
  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

    bluele
    bluele 2012/01/10
  • realloc

    メモリの割り当てを変更する 【書式】 #include <stdlib.h> void *realloc(void *ptr, size_t size); 【説明】 指定したヒープメモリのブロックを、指定したサイズに変更して再度割当てます。古いメモリブロックにあったデータは可能な限り新しいメモリブロックにコピーされます。 【引数】 void *ptr  : malloc関数、calloc関数、realloc関数を用いて確保したヒープメモリへのポインタ。 NULL(0)を指定した場合には、mallocと同様の動作をします。 size_t size : 変更したいメモリのバイトサイズ ※size_t は stdlib.h の中でtypedefされ、一般にunsignedです。 【戻り値】 成功時 : 再確保したメモリブロックを指すポインタ (void *についてはmalloc関数参照) このア

    bluele
    bluele 2012/01/10