C99の仕様 長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。
C99の仕様 長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。
C 言語のプログラムの汚さで競い合うプログラミングコンテスト、The 22nd International Obfuscated C Code Contest の今年の結果が公開されました。 http://www.ioccc.org/years.html#2013 相変わらずの変態ぞろいですのでぜひご覧ください。既報の通り、ぼくは以下の 4 つの賞を貰いました。 Most lazy SKIer Most recyclable Most tweetable 1-liner Most solid それぞれ順次紹介していきたいと思います。 ref: http://ioccc.org/2013/endoh1.c #ifndef SKI #define A(x)B(x##0)B(x##1)B(x##2)B(x##3)B(x##4)B(x##5) #define B(x)C(x##0)C(x##1)C
C99では、複素数ライブラリが採用された。たとえば3.0 + 4.0iの複素数を書きたい場合、GNU拡張では、以下のように書く。 #include <complex.h> double _Complex x = 3.0 + 4.0i ; complex.hをincludeすれば使えるようになる。見た目はそのまんまだ。 これはGNU拡張であって、C99の規格による正式な書き方は以下の通りだ。 float _Complex x = 3.0 + 4.0 * _Complex_I ; _Complex_Iは、"0+1i"を意味する虚数単位定数であり、にかければ任意の虚部を表現できる。あとは実部を足せばいい。 どうやら、C標準化委員会は、まともな名前を考えつかなかったらしい。まあ、大方のきれいな名前は、既存のソースコードと衝突してしまうから、アンダースコアに大文字で始まる予約語を使うしかないのだろう
_ 今、Cで開発するためのスタンダードを知るための本 例によってアスキーの鈴木さんから、本をもらった。花井さんのモダンC言語プログラミングだ。なお、似たような題の洋書があって、しかも花井さんは翻訳もするので、その本の翻訳書と勘違いされる可能性もありそうだが、完全にオリジナルだ。 Cは、Unixと共に(というか少し遅れて)生まれたということは、すでに40年以上の歴史があり、それだけの年月がたてば、COBOLなどと同じく老害言語と言われてもこれっぽっちもおかしくはない。 ところが、COBOLと異なり開発者市場がどんどん先細り(あるいは固定化)されるということはなく、むしろ増えている。それどころか最近の調査では最も利用されている(TIOBE 2013)。 一方、C++が先鞭をつけたビジネスプログラミングへのオブジェクト指向プログラミングの適用は、Java、Objective-C、C#と種類を増や
C言語をやってみよう,ふと思い立った.かなり久しぶりだ.大学当時Cは講義であった.学生時代怠けまくった結果(?)私はCよりも,趣味でやっていたJavaの方が書いたコードの行数は多い.だが,やはり「たしなみ」としてC言語はやっておかねばなるまい. 基本(?)ライブラリ編 プロセス制御 シグナル パイプ IPC Pthread Socket 端末制御 curses CUnit OpenSSLを使用したCプログラミング その他 基本(?)ライブラリ編とりあえず,ライブラリにある関数をいろいろ試してみる.もちろん(?)Debian環境で. ファイル操作 2003-07-20T15:13+09:00 matsu GNU/Linuxシステムでのファイル操作について.ここでは特にシステムコールを用いてファイル操作する方法について. 標準入出力ライブラリでのファイル操作 2003-07-20T15:13+
おなじみC/C++から使えるJSONライブラリを紹介するコーナー。まずは過去のまとめ。 最速と言われる JSON パーサ「rapidjson」が本当に爆速なのか試してみた。 C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。 僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search APIから検索するまでにやった、たった一つの事。 C言語から使えるJSONパーサ、JSMNを試してみた。 何も見ずにC++でjsonパーサが書けるか試してみた。 ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い! 最近は結構 matsuu さんのブクマから見つけて記事を書いてたけど今日はそうじゃない所からご紹介。 Jansson — C library for working w
■_ 8801! MkII はどのくらい後だっけか。 シンクレアのマシンは今はヒカリエになってるあの土地にあった建物の5階(だよな)にあった 某書店で見たような記憶がかすかに… 泳ぐやる夫シアター やる夫と学ぶホビーパソコンの歴史 第七話 ライジング・ソン ■_ 基礎講座C 学生のためのC 学生のための基礎C 学生のための詳解C ウィンストンのC 基礎から学べるC言語標準コースウェア 基礎から学ぶCプログラミング オープンソースで学ぶC言語 マスターC 例題で学ぶC言語 例題で身につけるC言語入門 はじめてのCプログラミング C言語プログラミング演習 Cプログラミング講座 入門ソフトウェア C言語 Cのドリル C言語によるプログラミング 基礎編 応用編 スーパーリファレンス編 基礎C言語プログラミング はじめて学ぶC言語入門 入門ANSI C C言語学習のポイント 新 C言語のススメ 最新
Learn to think like the computer hates you, because it does. Learn C The Hard Way (LCTHW) is a practical book teaching real world useful C using the same proven Learn The Hard Way method. LCTHW teaches real robust C coding and defensive programming tactics on real hardware rather than abstract machines and pedantic theory. The book emphasizes breaking your code on purpose, and in the process teach
mortdeus/legacy-cc · GitHub デニス・リッチー(1941-2011)によって書かれた発展途中の初期のCコンパイラーのソースコードがGitHubで公開されている。ソースコード自体は、まだデニス・リッチー存命の頃から公開されていたが、この機会に紹介してみる。 ライセンスは許諾的で、このライセンス文を同梱すること、並びに、ソースコードから生成されたバイナリはラインセンス文を出力することとなっている。 追記:ライセンスに関してふと思った。このライセンスは名義が企業で、著作権を盾に同意を求めている。日本では、映画以外の団体の著作権の保護期間は公開後50年である。UNIXと付属するソフトウェアのソースコードは当時から公開されていた。ということは、1973年に制作されたこのCコンパイラーのソースコードは、日本国内では、2024年に著作権が切れるのだろうか。 詳しい経緯は、以下の
#include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage
_FORTIFY_SOURCEというバッファーオーバーフロー攻撃を防ぐのにとても有用なマクロがある。 知らなかった人は以下のmanでもまず見てください http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/feature_test_macros.7.html _FORTIFY_SOURCE (glibc 2.3.4 以降) このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが 実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。 現在の実装では、以下の関数にチェックが追加されている: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3),
2013/04/30 タイトル修正 昨日、とある場所でこんな話で盛り上がった。 逆ポーランド計算機を作ろうと思ったんだけど、どうも結果が期待通りにならない。 ソースコードを見せて貰うと以下の様なコードだった。 #include<stdio.h> #include<stdlib.h> #define MAX_SIZE 100 int stack[MAX_SIZE]; int stack_pointer = 0; void push(int data){ stack[stack_pointer++] = data; } int pop(){ return stack[--stack_pointer]; } int pop1(int n){ printf("pop %d\n", n); return stack[--stack_pointer]; } int main(void){ char s
(2013-04-07 01:30追記)補足のコードに恥ずかしい間違いがあったのを修正しました。@nonakapさん、id:s-tomoさん、ご指摘ありがとうございます。 (2013-04-07 10:00追記)「補足その2」を書き足しました。 (2017-04-23追記)論旨がわかりにくい部分があったので、整理しました stackoverflowの記事「“while( !feof( file ) )” is always wrong」をざっくり翻訳してみます。これはWilliam Pursellさんによる自作自演スレ(回答者も本人)で、Cでwhile( !feof( file ) )というループを作るのが悪い理由を説明するものです。 ちなみにPHPについてもほぼ同じことが言えますので、PHPプログラマの方にも一読をお勧めします(PHPの主要なファイル操作関数はCとほぼ同じインターフェース
すごい昔に glibc mallocの内部実装についての解説をGoogle Videoにアップロードしたことがあるんだけど(*)、そのときにmallocを「まろっく」と発音していたらすごい勢いでツッコミをもらった。エムアロック派とメイロック派の両方に怒られた。 ところで、先週 glibcのメンテナと一緒に食事をする機会があり、glibcの今後の開発について相談をしたりしてたのだけど、がんばって「めいろっく」「めいろっく」言ってたら、「まろっくね」とやんわり否定されて、恥ずかしさマックスだった。はー、まともに英語が喋れるようになりたいわ。 (*)正確には「されたことがある」だけど。わたしはしてない。あの動画はアップロード者によって削除されてしまったので、もうインターネット上では見れない。知り合いに見られないのはいいことだが、自分がオリジナルをもってないので、たまにコピーをくれと言われると困っ
GNU MPC is a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result. It extends the principles of the IEEE-754 standard for fixed precision real floating point numbers to complex numbers, providing well-defined semantics for every operation. At the same time, speed of operation at high precision is a major design goal. The library is buil
キーボードショートカット一覧 j次のブックマーク k前のブックマーク lあとで読む eコメント一覧を開く oページを開く ✕
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く