タグ

C言語に関するkohkimakimotoのブックマーク (9)

  • How to C (as of 2016)

    How to C in 2016 This is a draft I wrote in early 2015 and never got around to publishing. Here’s the mostly unpolished version because it wasn’t doing anybody any good sitting in my drafts folder. The simplest change was updating year 2015 to 2016 at publication time. (Update: Many people have submitted revisions, notes, and improvements. All contributions have been incorporated throughout the pa

  • errnoでエラーを確認する - Qiita

    fopenは失敗したときにNULLを返しますが、 これだけですと何故失敗したのかを判断できません。 この問題は、失敗時に-1やNULLを返すシステムコールや関数では常に起きうる問題です。 このような問題が起きた場合には、errnoを利用することでエラーの種類を特定できる場合があります。 #エラーを判断するerrno errnoは内でグローバルに定義された整数値です。 errno.h内にはエラーに対応した定数が定義されており、 エラーが起きた場合にerrnoに値を設定するシステムコールや関数があります。 何かしらの処理に失敗した場合にはこの値を確認することで、 エラーの種類を特定できる場合があります。 このとき、errnoはどのような場合も0に変わることはない為、 処理の前にerrnoに0を代入することで、 その処理のエラーかどうかを判断できます。 (正常終了した場合は前の値を保持し、またe

    errnoでエラーを確認する - Qiita
  • Cのエラーメッセージ出力に関数名や行番号を付加する - 百日半狂乱

    二十五日半狂乱、5日目(の分)の記事 C言語における関数のエラーハンドリングには戻り値およびerrnoを使うが、自分が読んだ文法書などのサンプルコードではエラーが起こった場合の処理が、大体がperror("fopen"); exit(1);のような感じのもので、まぁ小さいサンプルコードをいくつも書いていたうちはこれでも良かった. だけど、ある程度以上の規模のアプリケーションを書き始めて、コードがそれなりに大きくなってくると一体どこのエラーなのか一目でわからなくなってくる. エラーメッセージを自由に設定して、関数名や行番号も表示したい.それに何度も書くのでできるならお手軽に書きたい. そんな事情で、一年前くらい前に以下のようなエラーメッセージ用の関数を作った.コンパイラはgccを使用する. 改めて見ると現在時刻は完全に蛇足な感じがするが、まぁ割と重宝している. 上記サンプルは実行すると、現在

    Cのエラーメッセージ出力に関数名や行番号を付加する - 百日半狂乱
  • Build a simple HTTP server in C

  • GDBでSegmentation Faultの原因を突き止める - /* Grid Thinking */

    Linuxのプログラムをデバッグするとき、一番困ることはあの有名の「Segmentation Fault」ですね。 プログラムが膨大でマルチプロセス等を使っていたら、どこで問題を起こしているのかすらわからないです。 編はLinuxのCore Dump機能で問題発生行を特定する方法を紹介します。 まず、前提としてはSegmentation Faultは再現できること。(当たり前ですよね) 下記のプログラムを例とします。#include<stdio.h> #include<string.h> #define DATA "TEST" char mngfile[2][50]; int main() { memset( mngfile, '\0', sizeof(mngfile) ); GetMngFile(mngfile); return 0; } int GetMngFile( mngfile

    GDBでSegmentation Faultの原因を突き止める - /* Grid Thinking */
  • koz.ross/awesome-c

    Awesome C A curated list of C good stuff. This list contains only open source code (as defined by the linked Open Source Definition), and sellers who aren't evil for physical resources. This is released under a Creative Commons-Attribution-ShareAlike license, version 4 (SPDX code CC-BY-SA-4.0). You can find its text in the LICENSE file. An important note: This project does not index anything C++-r

    koz.ross/awesome-c
  • Shared Object(.so)の勉強 - ぱせらんメモ

    いつの間にかはてなダイアリー市民になっていた。 立ち上げが去年の10月だったので1年以上かかったことになる。おせぇ。月に多くて5エントリぐらいだしな。 30日に1回は書いてないと剥奪されてしまうらしいので頑張って書いてみるぜ。 普段はPHPでWebシステムの開発をしているというのに、突然.soな共有ライブラリを扱った仕事が舞い込んできたのでお勉強。 C/C++自体はDOSやWindowsでよくやっていたのだがLinux上での開発は初めてだ。 WinMain()から始まってメッセージループがあってWindows API使いまくり、みたいな開発は得意だがLinuxはさっぱりわからん。 同じ言語でも土俵が違うだけで結構辛い戦いが予想される。ていうか、OSの違い以前にGUIとCUI(今回はCUIどころかアプリでもない)ってだけでも全然違うのに、「C言語できるんでしょ?」みたいなのはやめてほしい。

    Shared Object(.so)の勉強 - ぱせらんメモ
  • C言語の正しいヘッダファイルの書き方 - saito’s blog

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

    C言語の正しいヘッダファイルの書き方 - saito’s blog
  • あなたもできる!C言語でテトリスを40分で作る方法 · DQNEO日記

    デモ ニコニコ動画の伝説の動画 「テトリスを1時間強で作ってみた【実況解説】」という動画をご存知でしょうか? 2009年にニコニコ動画で公開されて話題になった動画です。 インタビュー記事:「テトリスを1時間強で作ってみた」動画の投稿者にインタビュー──「プログラミングの楽しさ伝えたい」 この動画ではテトリスをいちから作ってわずか62分で完成させています。 しかし実はスタート直後はMinGWのインストール、EmEditorのインストールに続いてブロック画像の作成などをしており、プログラミングが始まるのは開始13分のところからです。 さらに次の10分は「空のウィンドウ」を作るために時間を使っており、実質的にテトリスのプログラミングが始まるのは動画23分のところからです。 つまり、実質的に40分のプログラミングでテトリスを完成させています。 で、動画を見ながら同じようにやれば誰でもテトリスを作れ

    あなたもできる!C言語でテトリスを40分で作る方法 · DQNEO日記
  • 1