タグ

ProgrammingとCに関するlarkerのブックマーク (13)

  • linuxカーネルで学ぶC言語のマクロ - Qiita

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。

    linuxカーネルで学ぶC言語のマクロ - Qiita
  • わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ

    Cコンパイラといえばとてつもなく複雑なプログラムというイメージがあります。ところが、このCコンパイラを(サブセットとはいえ)わずか500行ほどのCのソースコードで実現した「CC500」名付けられたプログラムが公開されています。 ソースコードは可読性を維持するためにつけられた空行やコメントを含めると、実際は750行ほどになるそうですが、それでもこれだけコンパクトなソースコードで実行可能なELFバイナリ(Linux用のバイナリ)を生成できるのは興味深いのではないでしょうか。 以下実際にLinuxでコンパイルしてみました。 自己コンパイルできる このコンパイラはC言語のサブセットで、自分自身のソースコードをコンパイルできるところがおもしろいところです。まず「cc500_1」という実行ファイルを生成します。 gcc cc500.c -o cc500_1 生成された実行ファイル「cc500_1」を使

    わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ
  • 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

  • Javaはスクリプト言語より速い・・・のか?

    『プログラミング言語人気TOP10の簡易解説』という記事が人気を呼んでいたのだが、軽快な語り口で面白い読み物だが、語弊がありそうな部分がある。その中で特に、「(Javaは)実行速度はCに及ばないもののスクリプト言語よりは数十倍速い」とある部分が気になったので、簡単な例で検証してみた。 1. PythonPHPJava、Cで不適切な速度比較を行う 最初にコーディングが不適切な場合にプログラミング言語の速度比較を行うと、通説と異なる結果になる事を示したい。 Ubuntu Linuxで、オブジェクトをなるべく使わずに、順列の整数を100万個生成し、ランダムにシャッフルし、クイックソートを行ったときの経過時間を、timeコマンドで計測したものだ。ソート前、ソート後に配列の内容を、", "で連結して標準出力に書き出している。また、PythonAPIをなるべく使ったもの(*無し)と、なるべく使わ

    Javaはスクリプト言語より速い・・・のか?
  • C/C++ セキュアコーディングセミナー資料 | JPCERT コーディネーションセンター

    これまでにC/C++ セキュアコーディングセミナーで使用した講義資料を公開しています。2010年度にセミナを実施した、文字列、整数、動的メモリ管理、書式指定文字列、CERT C セキュアコーディングスタンダード、ROSE については、それぞれ最新版の資料を掲載しています。 文字列 ユーザとソフトウエア間に発生するデータのやりとりの大部分は文字列によって行われます。 また、プログラム間でのデータ交換も文字列形式で行われるようになり、その結果、文字列表現や文字列管理、文字列操作における弱点がソフトウエア脆弱性を生み出しています。 文字列では、C/C++ 言語における文字列操作、一般的なセキュリティ上の欠陥と、その結果発生する脆弱性と対処方法について解説します。 C/C++ における文字列の特性 犯しやすい文字列操作の間違い 文字列の脆弱性 プロセスのメモリ構成 スタック破壊の仕組み コードイン

    C/C++ セキュアコーディングセミナー資料 | JPCERT コーディネーションセンター
  • strcpy や memcpy と愉快な仲間たち - いけむランド

    以前 strcpy とか memcpy の実装の違いが気になったので、ちょっと調べてみた時の話を加筆・修正した。 まずはとてつもなく適当なテストプログラム。 #include <stdio.h> #include <string.h> #include <sys/time.h> #define BUF_SIZE 0x10000000 #define TRIAL_COUNT 5 char src[BUF_SIZE], dst[BUF_SIZE]; int main(int argc, char** argv) { printf("src : 0x%08x\n", src); printf("dst : 0x%08x\n", dst); puts(""); memset(src, 0xff, BUF_SIZE); src[BUF_SIZE - 1] = 0; memcpy(dst, src,

    strcpy や memcpy と愉快な仲間たち - いけむランド
  • 総合目次 - 苦しんで覚えるC言語

    苦Cの内容の転載などは自由ですが、苦Cからの引用であることを明記してください。 (どこかに「苦Cより」と書かれていればOKです。) 学校や会社などで生徒(新入社員)へのテキストとして使用することも自由です。 その際、内容を修正したり、印刷して配布するのも自由です。

    総合目次 - 苦しんで覚えるC言語
  • MAKEの第一歩(入門)

    makeというコマンドは、Makefileというファイルの記述に従ってファイ ルの更新を行なうユーティリティです。 と書いてもよくわからんだろうなぁ(^^; まあ、最初のセクションmakeって何するもん?でも読んでみてください。 このページの目標地点は入門の手前あたりまでです。「makeって聞いた ことはあるけど」とか「ちょっと触ってみようかな?」というレベルを 対象に書いてみました。「Makefileって最初だけを大文字にしなくちゃ いけないの?」などということさえ書かれていません。そのへんはman かinfoか成書で調べてください。 なお、このページ中で $ ls などと書いてあるときの$はコマンドプロンプトです。 目次 makeって何するもん? もっとも簡単な例 複数ファイルの場合 マクロの利用 ターゲットの生成方法の指定 ちょっとした応用 C以外にmakeを使う サフィックスルール

  • http://www.ecoop.net/coop/php4/how2use_GD.html

  • psqlodbcの問題対策

    w3m の configure のエラー。 w3m の configure で、以下のエラーが出た。 checking size of long long... configure: error: cannot compute sizeof (long long), 77 See `config.log' for more details. 環境は RedHat9 / FedoraCore4 での Linux 。これを調べてみる。まず、この 環境でやったことは、 w3m で必要な libgc である Boehm GC をインストール したこと。これは、 source をとってきて ./configure; make install ぐらいを したのみ。w3m のバージョンは最新(と言っても、日付は2004年か…)の、0.5.1 を使った。これを解凍して configure すると。 [to

    larker
    larker 2010/08/25
    so のリンク先が見つからない場合
  • cannot open shared object file - 下品だったり違ったり。

    ■エラー unixやらlinuxでアプリを実行しようとして以下のメッセージが出たとき [cannot open shared object file: No such file or directory] たぶん使うライブラリが見つかってない。 ■対処 ・必要なライブラリを調べる。 ldd [アプリ名] で必要なライブラリと、 ライブラリの在り処がわかってるかどうかが表示される。 libxerces-c.so.21 => not found ↑のように表示されるときはライブラリの場所が分からんよ。 ということなので shellのライブラリ検索用パスを設定する変数 LD_LIBRARY_PATH にパスを設定してやる。 ・LD_LIBRARY_PATHへの設定 今使ってる環境では setenv LD_LIBRARY_PATH [ライブラリを検索するディレクトリのパス] で設定できた。 ■--

    cannot open shared object file - 下品だったり違ったり。
  • JPEG画像ファイルの読み込み(IDGライブラリ使用)(dinop.com)

    解説 Independent JPEG Groupが提供しているJPEGライブラリを使用したJPEGファイルの読み込み。 ライブラリ作成時はライブラリのソースファイルには一切変更を加えずにライブラリをビルドしlibjpeg.libを得る。 ※ ヘッダーファイルに変更を加えれば「extern "C"」や「XMD_H」の定義、RGBの並び順変更などをライブラリ利用時に行なう必要がなくなる 読み込んだ画像はCBitmap形式でCJpeg::m_lpcBitmapに保存される。 グレースケールJPEGファイルなどには未対応。 使用例 //jpgファイルの読込 void test(void) { CJpeg cJpeg; cJpeg.SimpleOpen("Dscf1998.jpg"); } extern "C" { #define XMD_H // INT32の再定義エラー防止 #include

  • c-language Archives - ファイヤープロジェクト

    Skip to contentCategory: c-language095月2020 パッドウィンドウは物理画面や親ウィンドウの範囲内に収まって... Fujiko c-language, feature112月2020 popenとpcloseパイプのopenとclose.popenとpclos... Fujiko c-language, feature0811月2007 セマフォ共有メモリの話題に入る前の準備としてセマフォについて... Fujiko c-language, feature0711月2007 bzlibでbz2ファイルを読み書きしてみるbz2はメモリを喰うがzlibより圧縮効率がよいらし... Fujiko c-language, feature0711月2007 BIOとBase64BIOはOpenSSLにおけるフレームワークにおける... Fujiko c-lan

  • 1