タグ

C言語に関するWeintraubのブックマーク (109)

  • volatileで最適化を抑制する - 職業としてのプログラミング

    C言語やC++,Javaにはvolatileという修飾子があります。組み込み系ソフトウェアやマルチスレッドのアプリケーションを書いている方にとっては、なじみ深い存在ですが、そうでない方にはあまり縁がないのかもしれません。しかし、volatileの使い方や存在意義を知らないままコーディングを行うと、思わぬバグを引き起こす場合があります。今回は、そのvolatileキーワードについて簡単に説明したいと思います。 volatileは初期のCであるK&Rには含まれていませんでしたが、ANSI C(C89)以降のC標準規格にはconstと一緒に含まれるようになりました(constとvolatileをあわせてcv修飾子と呼ぶこともあります)。一般的なCなら必ず備えている修飾子です。 volatile修飾子の意味ですが、「プログラミング言語C ANSI規格準拠」によると、 volatileの目的は,黙っ

  • DOSプロンプト

    フォーマット指定子一覧 フォーマット指定子とは、C言語のprintf()、fprintf()、sprintf()、scanf()、fscanf()、sscanf()などの関数で使用する、 表示形式を指定するための記述子である。 C言語専用と思っていると、MFC(C++)のCStringクラスやjavaFormatterクラス(jdk1.5以降)にも使用されていたりして、 やはりしっかり覚えておかなくては、と思わせられることもある(詳細は異なるが)。 度忘れした際にはここを見ればよいように、よく使うフォーマット指定子をここにまとめておく。 なお、ANSI規格での全貌を知りたいときは、fprintfのリファレンス等を参照のこと。 出力フォーマット指定子 printf(),fprintf(),sprintf()などで使用する指定子である。

  • C++の疑問: 値渡し、参照渡し、ポインタ渡し

    ※ 末尾に追記あり。 C++、いろいろ未だにわからにことだらけなのだけれど、関数に値を送る場合の 値渡し 参照渡し ポインタ渡し の違いがいまだにすっきりと整理できていない。 C++、自分の場合はoFで使うことがほとんどなので、oFのコードで実験してすっきりしてみようとシンプルなコードを書いてみた。 力をベクトルで与えると運動するParticleというクラスを以前から作っていたいので、これはそのまま流用。長くなるのでコードの内容は割愛。 Particle.h Particle.cpp Particleを操作するためのMoverというクラスをつくってみた。このMoverクラスは3種類の方法でParticleのインスタンスを受けとることができる A: 値渡し B: 参照渡し C: ポインタ渡し Mover.h #pragma once #include "ofMain.h" #include

    C++の疑問: 値渡し、参照渡し、ポインタ渡し
  • Account Suspended

    Account Suspended This Account Has Been Suspended

  • 技術情報 | 株式会社きじねこ

    ここでは、当サイトに来られた方々に有益と思われるさまざまな技術情報を公開していきます。サイドメニューに、どのような技術情報を公開しているかのリストが表示されていますので、ご興味をもたれたページを是非ご覧ください。 技術情報に含まれる多くのページは、コメントを投稿できるようにしています。今後の改善のための参考とさせていただきますので、ご感想、ご意見、ご指摘などを残してくださると助かります。なお、当サイトに関わりない投稿、または不適切な表現が含まれる投稿に関しては、予告なく編集または削除させていただくことがございますので、あらかじめご了承ください。 当サイトに掲載しているソースコードは、ご自由に利用していただいてかまいません。ただし、何ら保証はありませんし、当サイト掲載ソースコードの使用および使用不可によって生じたいかなる損害に対しても、弊社は責任を負いかねます。すべて自己の責任においてご利用

  • 組込み現場の「C++」プログラミング 明日から使える徹底入門 | 組込み、IoT開発のクローバーフィールド

    2009年3月に技術評論社から出版された『組込み現場の「C++」プログラミング 明日から使える徹底入門』は、おかげさまで高い評価を得ることができました。 しかしながら、現在、同著は中古も含めて入手がきわめて難しい状況にあります。 「読んでみたいけれども、どこにも売っていない」という声もチラホラ聞こえてきます。 このたび出版社の了承を得ることもできましたので、当ウェブサイトにその全文を掲載することにしました。 掲載するのは、校正途中の原稿をベースに手直しを加えたものです。 したがって、実際の書籍の内容とは若干異なる部分があることをあらかじめご了承ください。 また、公開後も継続的に手直しを行っていく予定です。 7年も前の書籍ですので、現在から見ればすでに内容が古くなっている箇所も多々あります。 それらについては、別途補足説明を加筆するか、別の解説ページにリンクを貼るなどの対応を行いたいと考えて

  • CからC++への変更点

    関数のプロトタイプ C++では、一部C言語とは違う、または拡張された部分がいくつかあります コンパイラの実装レベルや、低レベルな部分での違いは省略します C++プログラムを読み書きするのに、Cプログラマが最低限知るべきことを紹介します まずは、関数のプロトタイプについてです C言語でのプロトタイプ宣言で、引数に何も値を受け取らない場合はvoidを明示する必要があります しかし、C++では任意です。voidを省略すると値を受け取らない関数を意味します #include <stdio.h> /*C言語ではvoidを明示しなければならない*/ void func(void); void func() { puts("kitty on your lap"); } int main() { func(); return 0; } 上はC言語プログラムです C言語では、引数に何も受け取らない関数の場合

  • C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み - Qiita

    はじめに @takeokunn そういや私の昨日のツイートたどってみ、C++初心者(boost.asioが使えないとは言っていない)の人とQiitaでやりとりしてたから — yumetodo-C++erだけど化学科 (@yumetodo) 2016年5月3日 @yumetodo だからC++erの初心者は初心者じゃないんだよ!!!!!!!!!!!!! だからC++er嫌いなんだよ!!!!!!!! — たけてぃ (@takeokunn) 2016年5月3日 @takeokunn 当人も「そろそろ中級者かな」 と言ってた 因みに C初心者 < C++初学者 < C++入門者 < C++初心者 < C++規格書リーディング初心者 < C++中級者 < C++規格書リーディング中級者 < C++上級者 < C++規格書クラッカー — yumetodo-C++erだけど化学科 (@yumetodo)

    C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み - Qiita
  • http://harold-spm.com/cgengo-content/

  • チャロぐ: Webカメラ(USBカメラ)で本のバーコード読み取り

    久しぶりの更新なので、近況報告。 東北の方行って来た。あと、車が10万km超えた。 最近、やたらとが増えて、どうしようにも管理しなきゃならなくなった。 主に漫画なんだけど、何でこんなにあるのか(買ってきたのか)不思議だ。 管理するのに 私管理Plus というソフトが良さげなので、試しに使ってみることにした。 しかし、これらの情報をすべて手で入力するのはとても大変なので、の裏にあるISBNを読み込んでくれるツールあるか探してみた。 見つからない無いので自作しようとしたけど、作ってる最中に ZBar というオープンソースのバーコード読み込むライブラリがあったので、それを使うことにした。 インストールしてみたけど、どうもカメラ認識してくれないので、その辺は DirectShowを使った、ビデオデバイスからのキャプチャ 最も簡単版 を参考(というか殆どコピペ)に作成。 試しに、デスノートの

  • 一週間で身につくC言語の基本|第7日目:ファイル分割

    ここまで紹介してきたプログラムは、どれも一つの.cファイルに記述されていました。しかし、実際に用いられる実用的なプログラムは、より大規模になり、一つのファイルには収まりません。実際、ソフトウェア開発の現場には多くのプログラマーが協力してプログラムを作っているのがほとんどです。 そういった場合、必要になってくるのが、ファイル分割です。C言語に限らず、実用的なソフトウェアのプログラムは、複数のファイルに分割されています。分割の仕方は、そのプログラムの機能などによって様々です。 ヘッダファイルとソースファイル すでの述べたとおり、cには、".h"(ヘッダファイル)と、".c"ファイル(ソースファイル)があります。通常、大きなプログラムは、多数の関数から成っています。そのため、それらのファイルは、規模に応じて複数に分割されることになりますが、通常、ファイルが分割されれば、他のファイルにある関数を呼

  • 一週間で身につくC言語の基本|トップページ~C言語の初心者でも、簡単にプログラミングが気軽に学習できるサイトです。

    編 これからプログラミングを学ぶ初心者に、C言語を1週間で身につけてもらうための内容です。内容は以下のようになっています。

  • 秀丸のタグジャンプとIMEのショートカットキー - 僕のススメ。

    僕はC言語のエディタは秀丸を使っている。ご存知の人も多いかと思うが、秀丸では「tags」ファイルを作成することで、関数の定義箇所にジャンプすることが出来る。この機能は言語の解析とかで非常に便利なので、とりあえずご紹介。 tagsファイルの作成 [その他]→[tagsファイルの作成]を選択 [対象ファイル]でファイルが入っているソースの一番上位のフォルダを選択する [サブフォルダも検索]にチェックを入れる [OK]ボタンをクリック 上記で「tags」ファイルの作成完了*1。 チェック対象の変更 デフォルトの設定だと、秀丸は同一ディレクトリにある「tags」ファイルしか見ない。これでは各フォルダごとに「tags」ファイルを置かなくてはならないので非常に不便。これを解消するには、上位フォルダにある「tags」ファイルを見に行くように設定を変更する。 [その他]→[動作環境]を選択 [上級者向け設

    秀丸のタグジャンプとIMEのショートカットキー - 僕のススメ。
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • C系言語の関数記述順序 - Google 検索

    2021/03/13 · 関数定義記述順序にローカルルールを設けるなどは実際のところなかなか ... C系の言語にはありません。 Pascalはすでに宣言されている関数や手続きで ...

  • 関数プロトタイプ

    | 関数の型情報と関数プロトタイプ | 関数プロトタイプの書き方 | 演習問題 | 暗黙の型情報 | ライブラリ関数の関数プロトタイプ | 関数の型情報と関数プロトタイプ 一般にC言語で関数を実行する際には、 その関数を定義するときに指定した型の引数を渡し、 それらの値を用いて何らかの処理を実行した結果が、 同様に関数の定義で指定した型の値(戻り値)として戻ってきます。 たとえば下のように定義された関数addではdouble型の二つの引数が渡されて、 それらを足した結果としてdouble型の値が戻ってきます。 double add(double a, double b) { return a+b; } この関数を使ったプログラムは例えば以下のようになります。 #include <stdio.h> double add(double a, double b) { return a+b; }

  • やり直しC言語:複雑な宣言の読み方

    C言語は宣言文が非常に読みにくいことで有名で、後発のGo言語はこれを批判して宣言の構文を変えています。私もずっと読むのが苦手だったのですが、私の頭が悪いのではなく、C言語の仕様がヘン、ということらしい。 今まで飽きるほどこの手の解説は書かれてきてるわけですが、自分なりにまとめないと覚えた気がしないので、あえてまとめておきます。ここに書いてある内容は、「C言語ポインタ完全制覇」に詳しく書いてあります。 型の派生 C言語では、int, char, floatなどの基型から、配列やポインタを派生していくことができます。対象を並べたものが配列で、対象を指し示すのがポインタです。 配列やポインタからも配列やポインタを派生できるので、派生パターンは無限に存在します。 int int の配列 int の配列 の配列 ... int へのポインタ int へのポインタ へのポインタ ... int への

    やり直しC言語:複雑な宣言の読み方
  • 基本入出力

    新しいヘッダ 基的に、C++の中でC言語のプログラムを用いることができます コンソール入出力についても、printf()やscanf()を使用することに問題はありません 骨格部分(制御や変数など)ではC++とCに大きな変化はありませんが C++で大きく改善された部分の一つが入出力です 応用的な詳しい内容は、C++質を学習してから紹介します C++のコンソール入出力ではstdio.hヘッダファイルを使いません これに代わるのがiostreamです さらに、C++では入出力に関数は用いず入出力演算子を用います 出力演算子は<<、入力演算子は>>です これは、シフト演算子と同じですね。もちろんC++でもシフト演算子として用いることもできます C++は、これらの演算子を入出力にも使用できるように拡張されています stream << value; streamには、出力先のストリームオブジェク

  • 自作CPU向けCコンパイラをつくってOS動かした話 (CPU実験まとめ) - kw-udonの日記

    僕の学科では伝統的に3年の後期に半年かけてCPU実験というものをおこなう。 班で自作のアーキテクチャを設計・実装し、FPGA基板上でMinCaml(OCamlのサブセット)でかかれた課題用レイトレーシングプログラムが動けば単位がもらえるというものである。 レイトレ完動後には、その高速化にはげむもよし、余興としてゲームをつくるもよしで、自作CPU上で色々あそんだりする。 今年は有志で班を結成し、自作CPU上でxv6というOSを動かした。 僕はその班にCコンパイラ係として参加したので、そのことについてかく。 あと、OS移植班全体の成果についても触れる。 わりと長くなってしまったので、結局なにができたんだっていう人は、とりあえず先にこっちに飛んでほしい。 動機 期間は4ヶ月程度、配布されたFPGA基板のうえで動かしたいという制約のもとで移植するOSはxv6を選択した。 このOSはシンプルであるが

    自作CPU向けCコンパイラをつくってOS動かした話 (CPU実験まとめ) - kw-udonの日記
  • C言語分かってなかった (I Do Not Know C) - Qiita

    Dmitri Gribenko氏によるBlog記事 "I Do Not Know C" より訳出。原文および訳文のライセンスは CC BY-SA 3.0 に従う。 この記事の目的は、皆に(とくにCプログラマに)「C言語分かってなかった」と言わせることです。 C言語の死角は思っているよりも身近にあり、よくある単純なコードですら 未定義動作(undefined behavior) を含む可能性があると示したいと思います。 記事は質問に対する回答の形をとります。全ての例示コードは別々のファイルに分かれていると考えてください。 (訳注:Qiita/Markdown表現の制約から、読中ネタバレ防止のため文章順序を変更しています。前半には質問のみを、後半には質問と回答の対を訳出しました。) 質問編 1.

    C言語分かってなかった (I Do Not Know C) - Qiita