タグ

cに関するh_arugaのブックマーク (6)

  • NECがUMLからC言語のコードを生成する開発ツールを出荷へ

    NECは7月31日から、UML(統合モデリング言語)を基にC言語のソースコードを生成する開発ツール「SystemDirector Application Modeler」の出荷を開始する。主に、組み込み系ソフトの開発向けの用途を想定している。UMLからC言語を生成するツールは珍しい。「組み込み系ソフトの開発現場では、UMLで記述したモデルを基にC言語で開発するというニーズが出てきている、そのニーズに応えたい」(岸上信彦開発環境技術部長)。 「SystemDirector Application Modeler」は三つの製品からなる。UMLで作図するための「SystemDirector Application Modeler UML Editor」、作図したモデルを検証する「同 Validator」、作図したモデルからC言語のソースコードを生成する「同 C Generator」だ。いずれも

    NECがUMLからC言語のコードを生成する開発ツールを出荷へ
  • Not Found

    See related links to what you are looking for.

  • ライブラリの外に公開するシンボルを制限する - bkブログ

    ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ

  • C++ と組み込み環境 | 一時オブジェクトの参照

    2006-01-30 επιστημη氏主宰のメーリングリストcppllでも一週間ほど前に一時オブジェクトの生存期間に関する話題が上がっていたので、こちらでもご紹介します。少し変更を加えてありますが、まずは下記のサンプルコードをご覧ください。 #include <iostream> class A { int a_; public: explicit A(int a) : a_(a) { std::cout << "construct - " << a_ << std::endl; } ~A() { std::cout << "destruct - " << a_ << std::endl; } }; const A& foo(const A& a) { return a; } const A& bar() { return A(3); } int main() { const A& a1

  • こんなプログラムはいやだ: INT_MIN / -1 - bkブログ

    こんなプログラムはいやだ: INT_MIN / -1 昨日とは別の知人から、INT_MIN / -1 を計算するとおもしろいことになると教えてもらいました。次の C のプログラムをコンパイルして実行するとどのような結果になるでしょうか。 #include <limits.h> int main () { volatile int a = -1; printf("%d\n", INT_MIN / a); return 0; } 結果は、プラットフォーム依存ですが、 x86 の上では SIGFPE (Floating point exception) で落ちると思います。 例によって、volatile をつけているのはコンパイラの最適化を防ぐためです。-1 をいったん、変数 a に入れているのも、コンパイラがコンパイル時に計算を済ませてしまうのを防ぐためです。 GCC で x86 用のインライ

  • 普通のやつらの下を行け: assert_caller() - bkブログ

    普通のやつらの下を行け: assert_caller() 以前に、低レベルプログラミングを愛好する知人が「普通のやつらの下を行け」を口癖にしていました。当時は何を言っているのかと聞き流していましたが、自分も最近になってようやく低レベルプログラミングのおもしろさがわかってきました。今回は「普通のやつらの下を行け」企画の第一弾として assert_caller() なるものを作ってみたいと思います。 assert_caller() とは assert_caller() とは、特定の関数からの関数呼び出しだけを通すためのアサーションです。たとえば、次のように foo() の先頭で assert_caller(main) と書いた場合、 foo() は main() からしか呼び出せなくなります。他の関数から foo() を呼び出した場合はエラーメッセージとともに異常終了します。 void foo

  • 1