C

Cで引数の個数の違いによる多重定義を偽装する

C

幾つか制限はあるけど、見かけだけ、多重定義されているように見せかける方法を思いついた。 以下テストコード #include <stdio.h> void foo0(void) { printf("foo0だよ\n"); } void foo1(int x) { printf("foo1:x=%dだよ\n",x); } void foo2(int x, int y) { printf(</stdio.h>…

C201xの最新ドラフトが出ている

C

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1362.pdf static_assert、uchar16_t、uchar32_t関係が追加されている。 ライブラリでは、at_quick_exit、quick_exitが追加されている。 浮動小数点関係も、何か修正があるみたいだけどよく分からない。

複合代入演算子の等号の位置が逆

C

ときどきの雑記帖 i戦士篇 09/2/9より K&R以前の仕様なんて普通の人は知らないよなぁ。 大昔に一度だけ、この仕様ではまって以来、=の前後に空白を入れる癖がついてしまった。 あと噂で聞いたんだけど、初期化子で等号が必要なかったって本当なの? int x 3; …

Cコンパイラ

C

https://staff.aist.go.jp/y.oiwa/FailSafeC/ メモリ安全を保証するCコンパイラか。 いつか試す。

別解

C

今日たまたま遭遇したところ 菊やんの雑記帳 http://d.hatena.ne.jp/kikx/20061121 答えは、 enum {A=100} 何だろうけど、あえて別解 char[A=100] C99に対応したコンパイラが必要 (^^)

自分自身を出力するプログラム

#define A(X) B(X) #define B(X) #X #define C "#define A(X) B(X)\n#define B(X) #X\n#define C " #define D main(){puts(C A(C)E A(E)"\nD");} #define E "\n#define D main(){puts(C A(C)E A(E)\"\\nD\");}\n#define E " D 特徴 printfを使っていないので…

最適化しないとバグ

GCC C

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30313 static inline void bar(){} struct S { signed int i: 32; }; int main() { struct S x = {32}; sizeof(x.i+0); return 0; } このバグは今のところ、最適化しないときのみ発生している。 最適化のバグは…

version 3.8 2006.9.15インストール