タグ

C言語に関するmasa8aurumのブックマーク (20)

  • 【C++】C++のヘッダインクルード周りの話 その1(includeの目的と分割コンパイルの基礎) - Qiita

    概要 C++のヘッダはインクルードが必要なのか不要なのか判らなかったリ、 順序によってどのような問題が起きるのか判らんけどとりあえず#pragma onceつけとけば問題無いよねとか、 大きな開発の場合初めからちゃんとやっておかないと後々解決しようがない程の問題(コンパイル速度)に発展しかねない危険も孕んでいたりと手軽に利用できる割には闇が深いです。 そこらへんについて自分の知識でまとめてみようと思うので、 間違っていたりこんな考えもあるみたいなのもあったら是非コメントでまさかりを投げてください! 出来る限り初心者の方でも判るように説明する予定です。よく判らないとかあったら言ってくれれば頑張ります。 結構長い解説になりそうなので数回に分けようと思います。 今回は初回なのでとりあえずインクルードの基礎的な知識について解説します。 includeする目的を考える 関数やクラスの宣言はヘッダに書

    【C++】C++のヘッダインクルード周りの話 その1(includeの目的と分割コンパイルの基礎) - Qiita
  • 大規模開発を経験していない人のC++本は読むだけ無駄

    某所で C++ の解説を企図しているみたいなんだけれども,なんだかなぁ,な感じ。おそらく,というか,ほぼ確実にあたしはこの人の書いたを読むこともないし勧めることもないと思う。というのも,この人は大規模な開発を行っている形跡がないから。 日技術書全般に言えることで,ここでは何度も書いていることだけれども,日技術書海外リソースの劣化コピーか実際の開発を経験していない人間が書いた,お教室やおままごとのような話ばかりだったりする。特に,C++Java,C# といった大規模開発を前提にした開発言語で,著者が大規模開発を経験していないという事実は,(ごく一部の例外除いて)それだけで著者としての資質に問題がある。 あたしゃ原書主義者でもないし,海外かぶれのつもりもありません。同程度でいいがあれば,日語で技術書を読みたいと思っている。しかし,そんなはほとんどない。 具体的に開発経

    masa8aurum
    masa8aurum 2018/04/30
    >この人たちは,実用的なプログラムを何一つ書いたことがない。または,自分が書いたプログラムを数年に渡って保守した経験がない(書き捨てのプログラムしか書いていない)。さらに,大規模開発の場合は特に,チー
  • Hello - GNU Project - Free Software Foundation

    GNU Hello The GNU Hello program produces a familiar, friendly greeting. Yes, this is another implementation of the classic program that prints “Hello, world!” when you run it. However, unlike the minimal version often seen, GNU Hello processes its argument list to modify its behavior, supports greetings in many languages, and so on. The primary purpose of GNU Hello is to demonstrate how to write o

    Hello - GNU Project - Free Software Foundation
    masa8aurum
    masa8aurum 2016/09/15
    GNUが用意しているデモ用プログラム。 GNU Autotools とかの学習に。
  • 仕事で使える魔法のLAMP

    前回、MySQLののビルドには「CMake」というツールを使うことを紹介し、その準備をしました。今回はひとまずMySQLをビルドしてみます(編集部)

    仕事で使える魔法のLAMP
    masa8aurum
    masa8aurum 2016/09/15
    連載。 (6) ~ (13) あたりで GNU make, configure, autoconf, GNU Hello とかに言及している
  • configureスクリプトとは何なのか - OTOBANK Engineering Blog

    おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん Unix のパッケージをインストールする時、configureスクリプト実行しますよね。 なんかいっぱいいろんな事してるみたいで便利そうですよね。 でも実際は何をしてるんでしょうね。 configureスクリプトの出力見てますか? エラーが起きたときしか見てない事ないですか? 先日、よく使ってるんだけどよく知らないと思われる configure スクリプトの正体について、オトバンクで勉強会をやりました。 魔法の呪文 ./configure && make && make install よく打っているコマンドだと思いますが、これだけで解決します。 素晴らしいですね!! GNU Autotools configure スクリプトはもちろん手動で作りません。 あんなもの手動でメンテナンスしてたら日が暮れてしまいますよ。 con

    configureスクリプトとは何なのか - OTOBANK Engineering Blog
    masa8aurum
    masa8aurum 2016/09/15
    configure, automake, Makefile.in, Makefile.am とかの解説
  • #if 0ハックすごくね?すげーってw - Seasons.NET

    #If 0ってC,C++では、#endifまで問答無用でコメントにしますが、 これを使ったハックがすごく便利。 元ネタ http://gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net #if 0 #!/bin/sh gcc -o a a.c exit #endif int main( void ) { printf( "Hello\n"); return 1; } これを保存して、実行属性をつけてから(chmod 755とか) ターミナルで、 # ./a.c と打ち込むと、 aという実行ファイルが生成される。 んで、./aと打ち込むと Helloと表示される。 今までは、Makefileか直接、gcc -o a a.cとかやっていた作業が、 ソースコード+Makefileの代わりになるわけ。 なぜこんな事ができるかってーと、 shのシェルスクリ

    #if 0ハックすごくね?すげーってw - Seasons.NET
    masa8aurum
    masa8aurum 2015/09/10
    #if 0 と shebang を使ったhack (2行目の #!/bin/sh は不要らしい。コメント参照)
  • PHP による hello world 入門 | 東北ギーク

    知る者は言わず、言う者は知らず — 老子 世界で最も有名なプログラムの 1 つに、 hello world というものがあります。 <?php echo 'hello, world'; 出力先に対して「hello, world」という 12 字を書き込むだけの単純なプログラムで、プログラミング言語やライブラリの利用例を最小限の形で示すものです。 この記事ではメジャーな Web プログラミング言語の 1 つである PHP 処理系が、hello world をどのように実行するのかについて、簡単に解説します。 以下の 4 節で構成されています。 「PHP スクリプト実行の大体の流れ」は実行時の概略を箇条書きでまとめたものです。 「SAPI」では、PHP 処理系の起動のされ方についての基礎知識を解説します。 「Zend Engine とオペコード」は PHP 公式処理系の仮想マシンの命令と、PH

    PHP による hello world 入門 | 東北ギーク
    masa8aurum
    masa8aurum 2015/06/18
    「PHP による hello world 入門」であって、「hello world による PHP 入門」ではないことに注意してください。」
  • C言語の正しいヘッダファイルの書き方 - saito’s blog

    最近、仕事でC言語での組み込み系の開発に携わっています。 開発中のコードを眺めていると、ヘッダファイル内にstatic関数のプロトタイプ宣言を記述していたり、ヘッダファイル内で不必要に他のヘッダファイルをインクルードしているなど、ヘッダファイルの書き方が分かっていないと思われる箇所が多々見られました。 実際、C言語の入門書でもヘッダファイルの書き方を詳しく説明しているものは、僕の知っている限りでは存在しないので、C言語を使っていてもヘッダファイルの正しい書き方を知らない人が少なくないのではないかと思われます。 そこで、このエントリでは、C言語のヘッダファイルの書き方について、僕が知っているテクニックをまとめてみました。 インクルードガードを書く ヘッダファイルファイルで他のヘッダファイルをインクルードしていると、いつの間にか同じヘッダファイルを2回インクルードしてしまうことがあります。 例

    C言語の正しいヘッダファイルの書き方 - saito’s blog
  • C/C++ 迷信集 | 株式会社きじねこ

    C/C++ を使うプログラマは大勢います。しかし、その多くは OJT を通して言語を学んだのではないでしょうか? 実はそこに大きな落とし穴があります。 コンピュータや工学のことをよく知らない人たちは、時代の先端を歩むプログラマには「迷信」など無関係だと信じて疑わないかも知れません。しかし、迷信や誤解はどんな世界にも常に存在しています。 というわけで、ここでは C/C++ にまつわる迷信、誤解、よくある間違いを採り上げていきます。非常に後ろ向きな企画ですが、暇つぶし気分転換に読んでみてください。もしかすると、ご自身が迷信にとらわれていたことに気付くかもしれません。 追記(2009/03/15) このコーナーでは、C/C++ にまつわる迷信、誤解、よくある間違いを扱っています。決して「迷信」だけではないのですが、タイトルにはすべて[迷信]を付けています。 これは、主に検索エンジンでタイトルを見

  • Old New Thing: 未定義動作はタイムトラベルを引き起こす(他にもいろいろあるけど、タイムトラベルが一番ぶっ飛んでる)

    Old New Thing: 未定義動作はタイムトラベルを引き起こす(他にもいろいろあるけど、タイムトラベルが一番ぶっ飛んでる) Undefined behavior can result in time travel (among other things, but time travel is the funkiest) - The Old New Thing - Site Home - MSDN Blogs 久しぶりに紹介するRaymond Chenのブログ記事。 C言語とC++では、様々な部分が、ドラゴンの住まう地というレッテルを貼られている。いや、正式には、未定義動作とされている。 未定義動作が発動した場合、何でもありだ。例えば、変数は同時にtrueでもfalseでもありえる。John Regehrは興味深い例のリストをまとめて、未定義動作コンテストの受賞者もある。 以下の関数を

  • コンピューター:C言語講座:マルチスレッドについて

    コンピューター:C言語講座:マルチスレッドについて マルチスレッドの特徴 一般的なサーバプログラムでは、多数のクライアントからの処理をできるだけリアルタイムに処理するために、何らかの形で並列処理を行うことが多いものです。たとえば、データベースサーバで、ある検索処理に時間がかかっている間ほかのクライアントが接続すらできない、という状態ではサーバとして失格でしょう。 並列処理を実現する方法としては、 ・プログラム自体を並列処理可能に記述する ・プロセスをもともと多数起動しておく ・fork()を使って子プロセスを起動するマルチプロセス処理 ・マルチスレッドを使用する などが考えられます。プログラム自体をリアルタイム性を考慮しながら記述するのはなかなか大変で、しかもソースが複雑になりメンテナンス性も問題が多くなりがちです。プロセスをもともと多数起動するのは簡単ですが、クライアントがどのプロセスに

  • 今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行 | Tokyo Otaku Mode Blog

    ソフトウェアを正しく理解する唯一の方法はコードを読むことです。 ドキュメントを読めばそのソフトウェアが何を実装しているか分かりますが、どのように実装されているかまでは分かりません。 開発中に何らかのトラブルに悩まされたときや、効率的なコーディングをしたいと思ったとき、下位レイヤのソフトウェアを理解しておけば素早く対処できるシーンが多くあります。 ただ、コードを読むことは簡単なタスクではありません。 現代的なソフトウェアはそれなりの規模のコードを含んでいることがほとんどです。アーキテクチャ間の差異を吸収するためのコードなど、質的な機能を理解する上ではあまり重要ではないコードも含まれています。 何らかの問題が発生してからコードを読もうと思っても、準備なしでは関連する箇所を探すだけでかなりの労力が必要な作業となります。 従って、普段からコードを読んでおくことが重要です。 また、コードを読むにあ

    今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行 | Tokyo Otaku Mode Blog
  • Tera Termソースコード解説

    Tera Termソースコード解説 はじめに 必要スキル モジュール構成 ライブラリ構成 プラグインサポート 設定ファイルの読み書き セキュアプログラミング 古いバージョンのWindowsとの互換性維持 デバッグ手法 マルチスレッド DDEによるプロセス間通信 TTSSHによるSSHの設計と実装 マクロ言語の設計と実装 キャレット制御 シリアルポート バイナリ転送プロトコル はじめに 文書では、Tera Termのソースコードについて解説をします。解説対象とするソースコードはバージョン"4.58"(2008年2月現在)のものをベースとしています。 必要スキル Tera Termのパッケージに含まれるほとんどのプログラムは、C言語で記述されています。一部のコードはC++言語で、MFC(Microsoft Foundation Class)が利用されています。Windows特有の処理を行うた

    masa8aurum
    masa8aurum 2014/11/04
    TeraTermソースコード解説
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

    masa8aurum
    masa8aurum 2014/08/21
    fork() の返り値は必ず正数チェックすること。でないとsignal送るときにやばい
  • 华体育(中国)官方网站

    华体育是:对股东负责,稳定回报,资产增值;对客户负责,服务至上,诚信保障;对员工负责,华体育生涯规划,安居乐业;对社会负责,回馈社 会,建设国家。中国XX倡导以价值较大化为导向,以追求卓越为过程,做品德高尚和有价值的人,形成了“诚实、信任、进取、成就”的个人价值观,和“团结、 活力、学习、创新”的团队价值观。集团贯彻“竞争、激励、淘汰”三大机制,执行“差异、专业、领先、长远”的经营理念。中国XX的愿景是以保险、证券、投资三大业务为支柱,谋求企业的长期、华体育稳定、健康发展,为企业各相关利益主体创造持续增长的价值,成为国际领先的综合金融服务集团和百年老店。 2008年,中国XX进入《财富》世界500强,并成为入选该榜单的中国内地非国有企业第X名。2009年6月,在英国《金...

    masa8aurum
    masa8aurum 2014/08/05
    ・型の前の const は、実体領域に書き込めない事を表す ・型の後ろの const は、実体領域に書き込めない事を表す ・ポインタ演算子 (*) の後ろの const は、ポインタ変数に書き込めない事を表す
  • 配列とポインタの奇妙な関係

    第1項:配列のような使い方 第2項:ポインタ専用の書き方 第3項:古き悪きポインタ演算 第4項:アドレスのことは忘れましょう [1]配列のような使い方 前節では、関数に配列を渡すには配列の先頭要素のアドレスを渡していたと説明しました。 ところで、次のプログラムは、ポインタ型の引数にした前節のプログラムですが、 このプログラムを見て、どこか不自然な部分は見あたらないでしょうか? #include <stdio.h> int getaverage(int *data); int main(void) { int average,array[10] = {15,78,98,15,98,85,17,35,42,15}; average = getaverage(array); printf("%d\n",average); return 0; } int getaverage(int *da

    masa8aurum
    masa8aurum 2014/08/04
    一時的に
  • C言語コードリーディング - 虎塚

    『WEB+DB PRESS vol.35』*1のコードリーディング特集の「第4章 C言語コードリーディング」を読みました。 重要な構造体を見つけるべし マクロが追いづらければプリプロセッサで展開してしまえ ログ出力して、エラーログを追え gdbを使え 等々、C言語のコードリーディングに特化したコツが載っていて、非常に参考になりました。 Cで書かれたコードを読むことは、とりもなおさず、アプリとOSとのやり取りを理解することなので、読む速度と精度を上げるには、OS側の知識がやはりそれなりに必要なんですね。 良い記事だと思ったら、松原克也さんという方と、ありえるの井上さんが執筆されていました。(松原さんは存じ上げませんが、井上さんについては)納得です。ちなみに、特集にはJavaPHPの章もあります。 *1:この号には、t-wadaさんが書かれたテスト駆動開発の特集があり、たしか、それを目当て

    C言語コードリーディング - 虎塚
    masa8aurum
    masa8aurum 2014/07/17
    重要な構造体を見つけるべし マクロが追いづらければプリプロセッサで展開してしまえ ログ出力して、エラーログを追え gdbを使え
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

  • Java 解説 - C との比較

    2005.11.18 17:53 - final - const? 2005.11.17 14:43 - string != char[] 2005.11.02 03:10 - とりあえず基的な事はを書き切りました 2005.10.28 23:55 - 引越し 一つでもプログラミング言語をマスターしていれば、それから他の言語をマスターするのは簡単です。所詮、プログラミング言語は最終的には機械語として実行され計算機を制御しようとしているだけなのですから。つまり、最終的にはどの言語でも出来ることはほとんど同じ。だって、計算機にできる事はプログラミング言語が変わったからといて変わるものでは有りません。なので最初にマスターした言語が低レベルであればより有利です。C 言語をマスターしていれば、Java をマスターするのは楽勝。と言うことで、C との違いという形で Java について解説します。 J

  • C 言語によるオブジェクト記述法 COOL

    C 言語によるオブジェクト記述法 COOL ver.2 C-language's Object Oriented Language ver.2 [検索] 目次 0. はじめに 1. クラスの記述, 属性の記述 2. 操作の記述 3. クラス属性の記述、定数の記述 4. 初期化操作と後始末操作の記述 4-1.処理効率優先インターフェイス 4-2.再コンパイル不要インターフェイス 4-3.動的バインディング・インターフェイス 5. 状態取得操作と状態設定操作とイベントハンドラの記述 6. 集約の記述、継承の記述 6-1.集約の記述 6-2.継承の記述 6-3.多重継承の記述 6-4.重複継承の記述 6-5.動的継承の記述 7. 多態性(多相性)、インターフェイス継承の記述 7-1.多態性の記述 7-2.多態性を持った生成の記述 7-3.多重継承の多態性の記述 7-4.重複継承の多態性の記述 7

  • 1