タグ

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

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

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

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


     C++  C++  JavaC#   
    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, world12  Web 1 PHP hello world  4 PHP  SAPIPHP  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 ChenCC++ truefalseJohn 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 importantfork() fork  forkmalloc fork0pid使  "-1"forkpid 
    masa8aurum
    masa8aurum 2014/08/21
    fork() の返り値は必ず正数チェックすること。でないとsignal送るときにやばい
  • 华体育(中国)官方网站


     XX XX 2008XX500X20096,...
    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*14C   gdb使 CCOSOS 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 -  CJava 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