タグ

ブックマーク / www.monaka.org (2)

  • 橋渡しとしてのAPI - もなもなもなかのページ

    前回 の続き. たぶんこれで件に関する一応の最終回. APIは世界の境界線 異なる世界観の端境にあって,両者の言い分を理解して橋渡しをする. API の設計は,端的には橋渡しに尽きる. API の直交性など,細かく言うと設計上気をつけるべき点はある. しかし,それは,より美しく使いやすい API であるための付加価値である. 大事だけれども質ではない. API の代表例として,OS が提供するものがある. システムコールとかサービスコールという名で呼ばれる. フリーダムなユーザランドと,好き勝手されては困るOSとの間の橋渡しをする. 一例として,リアルタイムカーネル TOPPERS/JSP のサービスコール関数の冒頭を引用する. 心配ない. RTOSのコードなんて読んだことが無いよ,という方でもざっくりと理解できれば十分. /* * メールボックスへの送信 */ #ifdef __sn

  • C言語における暗黙の型変換とAPI設計 - もなもなもなかのページ

    #include <stdio.h> #include <stdlib.h> int main(void) { int a = 65535; char b; b = a; printf("%d %d\n", a, b); return EXIT_SUCCESS; } 「a に 65535 を代入し,b に a の値を代入しているのだから,b も 65535 になるはず.」 などとLL言語(JavaScriptRuby など)に慣れていると思ってしまいがちだが,そうはならない. なぜなら,一般に,char 型の変数が保持できる値の範囲は,int 型の変数が保持できる値の範囲よりも小さいから. 概ね(…とボカす理由は後述),char は -128 から 127 までの整数しか保存できない. この性質は,ときどき,極めて恐ろしい. C言語は,上の例のように保持できる値の範囲が小さい変数への

  • 1