タグ

c言語に関するbelka333のブックマーク (8)

  • Linuxカーネルで学ぶC言語のマクロ - 覚書

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

    Linuxカーネルで学ぶC言語のマクロ - 覚書
  • 組込み開発向け C言語コーディング規約 | 組込みエンジニアの思うところ

    このc言語コーディング規約の目的 このc言語コーディング規約は、組込みソフトウェア向けのC言語コーディング規約について説明します。
C言語の規格には理解しづらい規則が多くあり、それを知らずにコーディングしてバグを出してしまうことがままあります。C言語の規格を理解すればそのようなバグは避けられますが、難解な規格書を読破するには多くの時間を費やさねばなりません。そこでこの書籍では、C言語コーディング規約としてC言語の間違えやすいところを選別して記載し、開発者のみなさんがC言語の細微の規則を理解する手間を省けるようにしています。 つまり、開発者の皆様にこの文書の規約を守っていただくことで、瑣末なC言語の文法的な規則を気にせずに付加価値を高めるための作業に専念していただくことを目的としています。

    組込み開発向け C言語コーディング規約 | 組込みエンジニアの思うところ
  • 安藤のためのC言語テスティングフレームワークCUnit

    安藤のためのC言語テスティングフレームワークCUnit 『CUnit for Mr.Ando』は CppUnit-x をベースにしたC言語テスティングフレームワークです。 これは、C言語のソースコードを単体テストのために供給します。 "CUnit for Mr.Ando" is CppUnit-x based C langage testing framework for Mr.Ando. It provide the C source code for unit testing. イントロダクション Introduction. JUnit は非常に強力なJava単体テストツールです。 しかしながら、多くのC言語技術者はJava言語を理解することができません。 JUnit is a very powerful Java simple unit test tool. However, man

  • C言語1000行以下で開発されたエディタ「Kilo」

    このほど、「antirez / kilo|GitHub」において、Salvatore Sanfilippo氏によってC言語を使い1000行以下のソースコードで開発されたエディタ「Kilo」が公開された。2条項BSDライセンスの下でオープンソース・ソフトウェアとして公開されている。ほかのライブラリに依存することなく開発されており、作業を始めてから数時間ほどで開発されたと説明がある。C言語による学習素材やエディタ開発のベースソースコードとして利用できる。 Kiloはclocを使ったカウントでコメントや空行を除いた行数が956行とされており、1000行を下回っている。開発にはcursesライブラリといった基的なライブラリも使われておらず、VT100の基的なエスケープシーケンスを使って開発されている。エディタにおける保存や終了といった操作には次のキーが割り当てられている。 Ctrl-S 保存

    C言語1000行以下で開発されたエディタ「Kilo」
  • Visual C++の勉強部屋

    理工系、特に電気系、の学生と技術者を対象としたVisual C++の解説を行います。Visual C++を始めたいが、よく分からないという人は、これを参考にしてください。ただし、初めてプログラムを学ぶ全くの初心者向けではありません。 資料の一部のJava版が(株)翔泳社のウエブサイトCodeZineにありますので、こちらもご利用ください(Java版とある場所をクリックして下さい)。Visual C++ 6.0版(現在は全部削除)が最初に公開され、そのJava版がCodeZineに寄稿され、その後に現在のVisual C++ 2005 Express Edition版が作成されています。 Java版は、すべてアプレットになっていますので、ブラウザから試してみることができます(Javaランタイム必要)。 Visual C++ 2008 Express Editionが無償でダウンロード

  • EternalWindows

    C言語によるWindowsプログラミングの解説サイトです。 書籍Windows Internalsの解説はこちらをご確認ください。

  • JPCERT C Secure Coding Standard 日本語版 - プリプロセッサ (PRE) (#c01)

    CERT C コーディングスタンダード 日語翻訳版コーディングスタンダードのご利用条件/著作権・免責事項 00. はじめに 01. プリプロセッサ (PRE) 02. 宣言と初期化 (DCL) 03. 式 (EXP) 04. 整数 (INT) 05. 浮動小数点 (FLP) 06. 配列 (ARR) 07. 文字と文字列 (STR) 08. メモリ管理 (MEM) 09. 入出力 (FIO) 10. 環境 (ENV) 11. シグナル (SIG) 12. エラー処理 (ERR) 13. Application Programming Interface (API) 14. 並行性 (CON) 49. 雑則 (MSC) 50. POSIX (POS) AA. 参考情報 BB. Definitions CC. 未定義の動作 DD. 未規定の動作 XX. お問い合わせ 00はじめに このページ

    JPCERT C Secure Coding Standard 日本語版 - プリプロセッサ (PRE) (#c01)
  • 文字列操作は「C言語最大の欠点」か? | スラド デベロッパー

    ITProのコラム「記者の目」は複数の日経BPの雑誌記者が記事にはしにくい個人的な意見などを書いている人気コラムだが、最近「C言語最大の欠点」というタイトルのコラムが掲載された。 どうやらタレこみ子と同世代らしい記者は、C言語最大の欠点を文字列処理であると断じ、特にバッファーオーバーフローの回避のためのコードを書くのが大変なところと論じている。そして、C++でSTLのstringクラスを使うべし、と主張している。 タレこみ子の乏しい経験からいうと、バッファーオーバーフローの問題は確かに大きな問題だが、それは「文字列」処理で起きるというよりは、ネットワークから受信する「データ列」の処理で起きるケースのほうが多いように思う。STLについては詳しくないのだが、stringクラスは'\0'も含みうるデータ列を正しく処理できるのだろうか。 また、バッファーオーバーフローは問題として理解しやすく、コー

  • 1