タグ

関連タグで絞り込む (161)

タグの絞り込みを解除

Cに関するiwwのブックマーク (396)

  • 組込み機器向けのコーディングに「MISRA C」が効果的な理由

    車載製品のソフトウェアの安全性と信頼性を支援するために作られた団体「MISRA(Motor Industry Software Reliability Association)」。同団体は、C言語のためのソフトウェア設計標準規格「MISRA C」を開発したことでも知られている。なぜ組込み機器の開発にMISRA Cを活用するのがよいのか。C言語とはどう違うのか。MISRA C 研究会に所属するビースラッシュの宇野結氏が解説した。 MISRAは、車載製品のソフトウェアの安全性と信頼性を支援するために作られた団体だ。1998年に、C言語のためのソフトウェア設計標準規格「MISRA C」を開発したことでも知られている。MISRA Cはその後も改訂が重ねられ、現時点でMISRA C:2012が最新版となる。 宇野氏が所属するMISRA-C研究会は、「MISRA Cを正しく理解し、実用的な形でまとめ、

    iww
    iww 2019/07/16
    『MISRA Cに従って記述することによって、安全性が高くなるのです』 そういえば、どの程度効果があるのかを定量的に示したものを見たことが無いな
  • Man page of ACCESS

  • ファイルサイズの取得方法 - 苦しんで覚えるC言語

    C言語にはファイルサイズを知るための関数はありません。 ファイルサイズを知るには、ファイルを開いてからファイルポインタを移動して求めます。 fpos_t GetFileSize(const char* FileName[]) { fpos_t fsize = 0; FILE* fp = fopen(FileName, "rb"); /* ファイルサイズを調査 */ fseek(fp, 0, SEEK_END); fgetpos(fp, &fsize); fclose(fp); return fsize; } fpos_t はデータのサイズを意味する変数で、実態は符号なしの整数値です。int に変えてもさほど問題はありません。 また、上記の処理で、ファイルポインタ、つまり現在の読み取り位置が変化してしまうので、下記のようにして戻します。

    ファイルサイズの取得方法 - 苦しんで覚えるC言語
    iww
    iww 2019/07/04
    fseek()で求めるとか、こういうことをしているから苦しむのでは
  • 日本のコンピュータ情報 : 富士通

    コンビニに行けば常に商品がずらりと並び、ECで買った商品は翌日届きます。消費者の利便性を優先して設計されてきたサプライチェーンは、過剰生産による資源ロスや、仕入れにかかる不均衡など、その綻びがいま深刻化しています。企業や消費者の共感を得ながら、サプライチェーンを再設計する方法を模索して、顧客体験設計の最前線を知るビービットの藤井保文氏と富士通 SVP 神 俊一が対談します。

    日本のコンピュータ情報 : 富士通
  • オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない10の理由

    オブジェクト指向プログラムで getter/setterメソッドを使わなければならない 10の理由 福盛 秀雄 fukumori at m.ieice.org JavaC++などのオブジェクト指向言語でプログラムを書いているときに、単純なメンバ変数を参照したり操作するために anObject.getX() [以後これをgetterメソッドと呼ぶ] とか anotherObject.setY(y) [以後これをsetterメソッドと呼ぶ] と書くのはなぜだろうと思ったことはないだろうか? int型の変数ひとつを操作するのになぜわざわざメソッドを定義するのだろう? 単純に代入を使えばいいじゃないか? この文章はそんなあなた(かつての僕も含む)が、getter/setterメソッドを使うべきである理由についてまとめたものである。 ということで早速論へ。 1. クラス内部のデータ表現を変えた場

    iww
    iww 2019/06/17
    列挙された理由がそのまま、今となってはgetter/setterを積極的に使用しなくても良い・しない方が良い理由になっている
  • Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー

    UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行

    Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー
  • 【C言語】引数なしの関数には void を書いた方がよいという話 - 0x19f (Shinya Kato) の日報

    C言語で引数なしの関数を書くときに void を書かないのと書くのとで挙動が違うなんて話を聞いたことはないでしょうか? つまり void func() {} と void func(void) {} で挙動が違うという話ですね。 自分も話だけ聞いたことがあったものの2つがどう違うのかはわかっていなかったため、C言語の規格を読みながら何が違うのかを調べてみました。 結果だけ述べると、この2つの書き方は同じように見えて実は明確な違いがあり、引数がない関数を定義/宣言する場合には後者を使うのが適切です。 とは言え、2つの書き方で違いがあるとかほんとかよ?と思う方もいると思うので、まずはこの二つがどう違うのか見ていきましょう。 2つの関数の書き方の違い 早速ですが、以下のプログラムを見てみましょう。 // func_empty.c void func() {} int main(void) { f

    【C言語】引数なしの関数には void を書いた方がよいという話 - 0x19f (Shinya Kato) の日報
    iww
    iww 2019/04/18
    『K&R スタイルの関数定義/宣言は C99 の規格で廃止予定とされていたらしいのですが、C11 の規格でもまだ廃止されずに残されています。』
  • printf デバッグ(デバッグプリント)の書き方

    デバッグするときはデバッガを使うのが定石ですが、なんらかの事由によりそれがかなわないときもあるでしょう。そのとき頼りになるのが片っ端から printf 文をいれていく方法、いわゆるプリントデバッグです。 CPUのレジスタなどはわかりませんが、単にどこまでプログラムが実行されたか知りたいだけ、とかならこれでもなんとかなります。2分探索で切り分けていけば、仮に100万行のコードでも高々20回の試行ですみます。 今回はこのデバッグプリントのTipsをご紹介します。 デバッグビルドとリリースビルドとで有効無効を切り替える printf デバッグするときには、リリース時にはそのデバッグプリント文は削除する必要があります。手作業でそれをやっていては削除漏れが起きてしまう可能性大です。そこで、プリプロセッサの条件コンパイルをつかってそれを自動化しましょう。 例としては下記のようになります。この例では、マ

    printf デバッグ(デバッグプリント)の書き方
    iww
    iww 2019/02/06
    #define DEBUG_PRINTF 1 ? (void)0 : printf みたいな手抜きではなく、ちゃんとした書き方版
  • unsigned long long type printing in hexadecimal format

    iww
    iww 2019/02/05
    unsigned long long を16進文字列にする
  • 組込み開発向け C言語コーディング規約 | 組込みエンジニアの思うところ

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

    組込み開発向け C言語コーディング規約 | 組込みエンジニアの思うところ
  • [Cppcheck] cfg ファイル設定

    Cppcheck 1.63 がリリースされました。 といっても大分前ですが… 調べたり検証したり別のことやってたりしてたら時間がかかってしまいました。 トラブってました1.63 を早速インストールしたところ、下記のようなエラーが… (information) Failed to load std.cfg. Your Cppcheck installation is broken, please re-install. The Cppcheck binary was compiled without CFGDIR set. Either the std.cfg should be available in cfg or the CFGDIR should be onfigured. cygwin から実行すると動作して、コマンドプロンプトからだと上記エラーが… どうしたものかと調べていたら、

  • 古のテクニックを見せようと思ったら最近の技術の前にあっさり敗北した話

    オブジェクトについて抽象から具象まで取り混ぜて説明していた時、最も具象なレベルで見れば、オブジェクトはメモリ上に確保した領域にすぎないと説明しました。 そんな説明をしていた時、メソッドの実体ってどこにどうあるのですかと質問を受けました。人の心はどこにどうあるのですかという質問に比べると緩い質問ですが、良い質問だと思いました。こういう疑問を持つのは大事だと思うからです。自分もかつてプログラムとは結局のところどう実行されるのかが気になりました。プログラマなら誰もが通る道だと思います。 そんなわけでJavaのような箱入り娘から離れて、デレのないツンデレ娘ことC言語で古のテクニックを見せることにしました。 とりあえず次の簡単なコードから始めます。C言語は知らなくても構いません。関数fnがあって、引数に2を加算して返すことだけを読み取ってください。 #include <stdio.h>

  • nmコマンドでC/C++のシンボルテーブルを見る、C++の名前マングリング、"C"リンケージ、あるいはリンカに関するメモ - 百日半狂乱

    前回(g++)と前々回(gcc)のサンプルコードを使ったC++のマングリングや"C"リンケージに関するメモ. nmコマンドでサンプルコードのシンボルテーブルを覗いた後に、C++からCの関数を呼び出す場合のサンプルコードを示す. 特にリンケージ周りの説明は正確性を欠いているやもしれませんのでご容赦下さい.より詳細な説明は参考リンク等を参照して頂ければと思います. nmコマンド nm は、UNIXや類似のオペレーティングシステムに存在するコマンドであり、バイナリファイル(ライブラリ、実行ファイル、オブジェクトファイル)の中身を調べ、そこに格納されているシンボルテーブルなどの情報を表示する。デバッグに使われることが多く、識別子の名前の衝突問題やC++の名前修飾の問題を解決する際に補助として用いられる。 GNUプロジェクトでは、高機能の nm プログラムを GNU Binutils パッケージの一

    nmコマンドでC/C++のシンボルテーブルを見る、C++の名前マングリング、"C"リンケージ、あるいはリンカに関するメモ - 百日半狂乱
  • Cppcheckの使い方の詳細と設定 | 技術者魂

    ディレクトリ内の全てのファイルを検査 通常、プログラムはプロジェクトディレクトリ内にある多くのソースファイルから成り立っています。 そのディレクトリ内にある全てのソースファイルをチェックする方法から。 サンプルのコードですと面白くないので、C/C++で書かれたオープンソースをダウンロードしてCppcheckを実行してみました。 サンプルとして選んだソースは、MariaDBのコネクターです。私は、データベースを扱うことが多く、たまたまMariaDBのソースが手元にあったからです。(mariadb-connector-c-2.3.2-src.tar.gz) Checking mariadb-connector-c-2.3.2-src/examples/mysql_affected_rows.c… 1/109 files checked 0% done Checking mariadb-conn

    iww
    iww 2018/11/28
    ちゃんと設定すればちゃんと使えるっぽい
  • 静的解析による品質向上支援ツール「PGRelief C/C++」 価格 : 富士通ソフトウェアテクノロジーズ

    生命保険、通信、自動車業界、金融そして化学メーカーなど、異なる業種をつなげ、「マーケティング」の切り口から社会課題の解決の糸口をみつけることはできないか。日を代表する企業のマーケティング責任者・担当者が集まり、経済が直面する課題について意見を交わしました。記事では、最終日の会合から議論の一部を紹介します。​

    静的解析による品質向上支援ツール「PGRelief C/C++」 価格 : 富士通ソフトウェアテクノロジーズ
  • AdLint 日本語情報トップページ - OSDN

    AdLint(アドリント) は、オープンソースのソースコード静的解析ツールです。 AdLint は、ソースコード中の安全性や移植性に欠ける部分について警告メッセージを出力し、また、同時にさまざまな品質メトリクスを測定することができます。 AdLint は、(現時点では) ANSI C89 / ISO C90 / 一部 ISO C99 規格に準拠した C 言語 のソースコードを解析することができます。 AdLintRuby で実装されているため、WindowsMac OS X、GNU/Linux、FreeBSD など Ruby がサポートする全てのプラットフォームで利用することができます。 !なお、最新のバージョンは、下記URLからダウンロードしてください。 http://sourceforge.net/projects/adlint/

    AdLint 日本語情報トップページ - OSDN
    iww
    iww 2018/11/28
    C言語用静的解析ツール。 2014年にプロジェクト終了。
  • MALLOC

    時事ネタ いや、「今、fj.comp.lang.cが熱い!」という話は ちょっと前から聞き及んではいたのですが、 流量が尋常じゃないらしいので、 忙しさもあって読むのを控えていたんですけど、 先日、大筋を拾い読みしてみました。 確かに熱いですねえ。 いったん収束するかなあ、と思ったら、なんかまた泥沼の気配が(^^; fjを読んでない人のために説明すると(って、 私も普段はあんまり読んでないんですが)、 「malloc()で確保した領域は、必ずfree()で解放しなきゃいけないか?」という 話題でして、「exit()する時には、OSが解放してくれるんだから 別にfree()しなくてもいいじゃん」という主張と、 「いや、malloc()には常に対になるfree()があるべきだ」という主張があって、 議論を呼んでいたのでした。 んで、私がどう思うかなんですが、 私は面倒臭がりなので、free()

    iww
    iww 2018/11/28
    free面倒とか言いつつMEM_mallocなるラッパーを作るなら、MEM_freeでも作って中身は空にでもすればよいだろう。という話
  • AdLint 3.2.14 利用者ガイド

    導入 AdLint とは AdLint は、オープンソースのソースコード静的解析ツールです。 AdLint は、ソースコード中の安全性や移植性に欠ける部分について警告メッセージを出 力し、また、同時にさまざまな品質メトリクスを測定することができます。 活用事例の一部は、付録のスクリーンショットでご確認いただけま す。 AdLint は、(現時点では) ANSI C89 / ISO C90 / 一部 ISO C99 規格に準拠した C 言語 のソースコードを解析することができます。 AdLintRuby で実装されているため、WindowsMac OS X、GNU/Linux、FreeBSD など Ruby がサポートする全てのプラットフォームで利 用することができます。 ライセンス Copyright (C) 2010-2014, OGIS-RI Co.,Ltd. AdLint

  • Re:出てくる警告にどう対処するのかが問題 (#1347764) | 静的プログラム解析ツールの実力は? | スラド

    警告を無視したり、出てくる指摘に「逃げる」ようなコードで対処するプログラマばかりの世界では、まったく品質は向上しない。そして困ったことにそういう所こそ、品質を向上させなくてはいけない元凶だったりする。 # しかも、周りがヤイのヤイの言っても、今まで一度も直らなかったぐらい # 上から下まで、ものを判っていない。 というわけで、このようなツールを使ったからどう、という事ではありません。 このようなツールの出力にどう対処するかが問題。また、このようなツールが 出してくる警告の量から、プログラム改善にかかる時間を正確に見積もる、などの マネージメント能力も大事でしょう。

  • C/C++の静的解析ツール・事例まとめ - 簡潔なQ

    C/C++の静的解析は、どう考えても大変なんだけどどう考えても需要が高いので、やはり色々なソフトウェアや事例があるようだ。まとまった情報が欲しいけど見つからなかったので自分の調べた範囲でまとめることにした。 他にも耳寄りな情報があったら教えてほしい。 静的解析を行うことができるソフトウェア 調べてみると結構たくさんある。それぞれの特徴とかあまりよくわからない。 (個人的には、とりわけ網羅的な形式的検証ができるツールの性能に興味があるので、それを中心に集めていたが、やはり網羅的とは限らないで探すともっとたくさん見つかるようだ。もちろん網羅性にはトレードオフがある) Frama-C …… C言語に形式手法を適用するための汎用のフレームワークで、静的検証のためのプラグインも多数(WPとかValueとか)存在する。網羅的な検証から発見的な手法、動的な手法まで様々ある。研究で使うのに便利そう Ast

    C/C++の静的解析ツール・事例まとめ - 簡潔なQ