プログラミング言語 C は 1990 年に ISO で規格化された言語です。その後、何度かの誤りの訂正や wchar_t 型の追加といった追補がなされた後、さらに使いやすくするための新しい機能が検討されてきました。そして、1999 年、ついに新しいプログラミング言語 C の仕様「ISO/IEC 9899:1999 - Programming Language C」(略称 C99) が 1999/12/01 付けで規格として出版されました。ここでは、その新機能を説明します。
プログラミング言語 C は 1990 年に ISO で規格化された言語です。その後、何度かの誤りの訂正や wchar_t 型の追加といった追補がなされた後、さらに使いやすくするための新しい機能が検討されてきました。そして、1999 年、ついに新しいプログラミング言語 C の仕様「ISO/IEC 9899:1999 - Programming Language C」(略称 C99) が 1999/12/01 付けで規格として出版されました。ここでは、その新機能を説明します。
まだ途中。書き次第随時追記していきまする。間違いとか分かりにくい表現があったら遠慮無く指摘してくだしあ。
C11の変更点 C23の変更点 プリプロセッシングディレクティブ プリプロセッサの概要 基本構文 条件付きディレクティブ ソースファイルのインクルード バイナリリソースの埋め込み マクロの定義と置換 行制御 診断ディレクティブ プラグマディレクティブ ヌルディレクティブ 事前定義されたマクロ名 プラグマオペレーター まとめと実践問題 /データ型と変数の高度な話題 (typedef,enum, const など) 中級者向けの話題 (プログラム仮引数, inline, 再帰 など) ストレージクラス指定子 auto constexpr extern register static thread_local typedef 定数式 整数定数式 算術定数式 アドレス定数 属性C23 非推奨化、フォールスルー禁止、非復帰など 型推論C23 typeof演算子とtypeof_unqual演算子C23
gdb は ptrace(2) システムコールの便利なフロントエンドインタフェースとして使えます。特にターゲットプロセス内の関数を式の中で呼ぶことができる機能は強力で、ptrace の attach 機能と組み合わせて使えば、動作中のプロセスに対してちょっかいを出すことが簡単にできます。 単純な活用例をいくつか紹介します。以下は i386 の Debian GNU/Linux (sid) のシステムで実験しました。gdb は 6.4 より前のバージョンではうまく動かない例があります。 % ps x | grep firefox 3616 ? Rl 19:40 /usr/lib/firefox/firefox-bin -a firefox % gdb -q -p 3616 (gdb) p chdir("/") [Switching to Thread -1221168480 (LWP 361
The GNU Source-Level Debugger Eighth Edition, for GDB version 5.0 March 2000 Richard Stallman, Roland Pesch, Stan Shebs, et.al. GDBの要約 フリー・ソフトウェア GDBに貢献した人々 GDBセッションのサンプル GDBの起動と終了 GDBの起動 ファイルの選択 モードの選択 GDBの終了 シェル・コマンド GDBコマンド コマンドの構文 コマンド名の補完 ヘルプの表示 GDB配下でのプログラムの実行 デバッグのためのコンパイル ユーザ・プログラムの起動 ユーザ・プログラムの引数 ユーザ・プログラムの環境 ユーザ・プログラムの作業ディレクトリ ユーザ・プログラムの入出力 既に実行中のプロセスのデバッグ 子プロセスの終了 マルチスレッド・プログラムのデバッグ マルチ
State of the art C compiler optimization tricks, Felix von Leitner, Linux Kongress 2009. 最近のCコンパイラーの最適化能力についてまとめたプレゼンテーション。定数の扱いやインライン展開などの基本的な項目から始まって,分岐の削除やベクトル化, SIMD 化など,最新のコンパイラーに搭載されている様々な機能について調べている。 この手の分岐の削除はほとんどのコンパイラーで有効らしい。 ベクトル化については gcc がだいぶ頑張っている印象。 「gcc は全プラットフォームにおいてビデオコーデックプログラマーより賢い」 これらの最適化が実際のコードでどのように機能するか気になって逆アセンブリコードを覗いてみる人も少なくないと思うけれど,それを代わりにやってくれた感じだ。この手の話題に興味がある人ならば,目を通
C言語, gcc, cygwin, starbug1C 言語 マクロ講座 # ## 編に触発されて、もうすこし悪戯を。(例によってcygwin+gcc)htmlでは、" (ダブルクォート)が多用されているので、cgiプログラムでは、文字列として定義するときにエスケープする必要があり面倒です。hello は、"hello" として定義しなければなりません。このおかげで、Starbug1のソースは大変なことになってます。普通ならテンプレートエンジン書け!ってことになるんでしょうが、Starbug1の性質上余分なことはしたくないので、現在htmlをエスケープしながら直書きしてます。プリプロセッサで処理する方式で、エスケープせずにhtmlを記述できるようになると非常に嬉しいので、# を使ってヒアドキュメント風なものを試してみました。最初試したのは、↓のような感じ。普通に動きました。 #includ
ダウンロードファイルの中で「要MFCDLL」と書かれているものは、ダウンロードファイルとは別にふたつのDLLファイルを必要とします。 特に、最近「DLLはあるのにうまく動かない」という問題がいくつか起きています。 これらについての詳細はこちらをご覧ください。 すべてのファイルはスキャンワクチンリミテッド(Ver.7.1.5.4(95))によるウィルスチェックを行っています。ただし、このウイルスチェッカーは結構古いので、できる限り、使用する前に自分でチェックすることをお奨めします。 ちなみにVector Software PACKや窓の杜では、掲載時にウイルスチェックを行っているので、掲載されているものはかなり安全性が高いと思います。 各アプリケーションにはオンラインマニュアルが存在します。上のメニューバーから直接行くことができます。 また、オンラインマニュアルのオフライン版も存在します。ダ
Microsoft Learn. Spark possibility. Build skills that open doors. See all you can do with documentation, hands-on training, and certifications to help you get the most from Microsoft products. Learn by doing Gain the skills you can apply to everyday situations through hands-on training personalized to your needs, at your own pace or with our global network of learning partners. Take training Find
2010年05月13日04:00 カテゴリLightweight Languages (gc)c - block?それってnested functionで出来るよ! 残念ながらBlocksが使えるのはOS Xのみであるが… Binary Hacks 高林哲 / 鵜飼文敏 / 佐藤祐介 / 浜地慎一郎 / 首藤一幸 PerlエンジニアのためのObjective-C Blocks入門 - unknownplace.orgOS X 10.6 以降の xcode では Objective-C に Blocks というシンタックスが追加されている。 gccであれば、Nested Functions というものが使える。 例えば、以下はcodepadでも動く。 http://codepad.org/V3uDduYT #include <stdio.h> int main(int argc, char*
最近は、特別な事が無いかぎりそのような事は無くなりましたが、C としては一つの大きな山場です memset、strcpy、memcpy、構造体メンバ参照、バイトデータ代入、構造体同士の代入、fwrite と 盛りだくさんです #include <stdio.h> #include <string.h> #include <memory.h> // お約束の typedef typedef struct MY_STRUCT { char code[5]; char name[18]; char tanka[7]; char crlf[2]; } GOODS; int main( int argc, char *argv[] ) { FILE *fp; GOODS gs,gs2; // バイナリ書き込みモードでオープン fp = fopen( "GOODS.DAT", "wb" ); /
What is it ? The Obfuscated Tiny C Compiler (OTCC) is a very small C compiler I wrote in order to win the International Obfuscated C Code Contest (IOCCC) in 2002. My goal was to write the smallest C compiler which is able to compile itself. I choose a subset of C which was general enough to write a small C compiler. Then I extended the C subset until I reached the maximum size authorized by the co
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く