2006-01-01から1年間の記事一覧

ビットフィールドの型

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30328 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30332 ビットフィールドを使うと地雷踏みまくり。 最近、ビットフィールド関連のバグを合わせて五つほど報告。 ビットフィールドはバグを避けて使うのは難…

最適化しないとバグ

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; } このバグは今のところ、最適化しないときのみ発生している。 最適化のバグは…

ビットフィールド

多分大丈夫だと思ったけど通常使わないビットフィールドの使い方をしてみた。 予想に反し、GCCはバグっていた。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30274 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30277回避策 なし。こんな間抜けな使い方す…

サイズ不明の配列へのポインタを引数に取る関数:定義編。

http://d.hatena.ne.jp/sulpsulpc/20061125では宣言する方法のみだったので、今回は定義する方法。 #include template struct P { typedef R func(A*); }; P>::func foo; template struct I { friend R foo(A* x) { X y= *x; std::cout ; template struct I,…

ATM

近所の郵便局にあるATMが、故障しているっぽい。入金ができないのです。 もう一台あったからいいけど。

JDK 1.6

http://java.sun.com/javase/ja/6/いろいろ出ていたので、インストール

Salford Fortran 95 version 5.0

http://www.silverfrost.com/11/ftn95/ftn95_fortran_95_for_windows.asp

Open Watcom Version 1.6

http://www.openwatcom.org/

Visual Studio 2005 Service Pack 1

http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/vs2005/sp1/ とりあえずいれておく。

クラステンプレート内でのフレンド関数定義

ここを見て、日記を書いていられる方を見かけたのでちょっとだけ解説。 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19809で示されているサンプル #include template struct n{ friend void foo(){ std::cerr n1; n n2; n n3; foo(); } Reporterの方は、規…

本日の誤訳

CLI

JIS X 3016 5.18 『CTSの整数部分』って何だよ。『CTSの重要な部分』だろ! JIS規格の和訳はいまいち信用できね〜〜 原規格を読むのは、辛いのよ。和訳のチェックしてよ >日本規格協会

本日のバグ

クラステンプレート内で、using宣言がうまく機能していない。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30195回避策 using宣言を使わずに、明示的に限定するべし。 滅多に遭遇するバグじゃないし、問題になることはまず無いかな。

JIS X3016

CLI

http://d.hatena.ne.jp/RiSK/20061120より CLI JIS化されたのね。JISCで閲覧できるみたい。 日本語で読めるのはありがたい。

本日のバグ

http://gcc.gnu.org/bugzilla//show_bug.cgi?id=30144 重複だった。orz

変換演算子

C++

void への変換演算子を定義するのはvalidなのね。始めて知ったぞ。 何に使うんだよ。こんなの。

C++0x 右辺値参照

C++

C++0x 2006.10版ドラフトに右辺値参照が入っていることを発見。 GCCに実装されるのは早くてもversion 4.3以降みたい。

サイズ不明の配列へのポインタを引数に取る関数。

題のような関数の宣言は、標準C++では禁止されているが、 現ヴァージョンのGCCでは、以下のような抜け道がある。 template struct bar { static void baz(X* x); }; extern "C" __typeof__(bar>::baz) foo; // 関数 void foo(int(*))の宣言 ただし、これがGC…

本日のバグ

いや、これを発見したのは今日じゃないんだが、 http://gcc.gnu.org/bugzilla//show_bug.cgi?id=29928 http://gcc.gnu.org/bugzilla//show_bug.cgi?id=29927GCCにバグレポートを提出したまではいいんだが、 後者のコードはどう解釈すればいいんだか、よくわ…

errno

BCCのライブラリのバグ発見。 errnoがマクロではなく、namespace std内の、外部識別子として宣言されていやがる。 やはり、BCCは捨てた方がいいな。

gnu prolog version 1.2.16

インストール gcc 3.3じゃないとコンパイルできない。 左辺値へのキャストを使っているみたい。

ghc version 6.6

バイナリをhttp://haskell.org/ghc/からDLして、インストール。 何をするつもりなんだろ?俺。

libiconv version 1.11

lib

今回の configure option ./configure --enable-static --disable-shared --enable-extra-encodings

ICU version 3.6.0

lib

ICUが9/1にversion upされていたのでインストール 今回のcunfigure option ./configure --enable-shared --enable-staticGCC 4.1.1でコンパイルできねえー (T_T) GCC 3.4.6を使ってコンパイル成功。いつの間にかUNICODEがversion5になっているのね。

今日遭遇したバグ

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19809このバグはVCの以下のバグについて調査しているときに遭遇 template class foo { template friend void prod(const foo&); }; template void prod(const foo&s) { } int main() { foo x; prod(x); return …

昨日のバグの回避策

先頭に以下を追加 #define main(ARGC,ARGV) (main_)(ARGC, ARGV) int main(int argc, char *argv); int (main)(int argc, char *argv) { return main(argc, argv); }

g++のバグに遭遇

main関数をクラステンプレートのフレンドにできね〜。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24449

C++0xを試す。

右辺値参照、static_assert、Right Angle Brackets、Delegating Constructors、 concept、可変個テンプレート引数を試せるGCCを作成。patchはこのあたり http://mndfck.org/~pedro.lamarao/projects/c++0x/ http://www.generic-programming.org/software/Con…

templateとtypeof

以下のように書くとコンパイルエラー template typeof(*(T*)0+*(U*)0) add(const T& x, const U& y) { return x+y; } http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11078回避策 template struct C { typedef typeof(*(T*)0+*(U*)0) type; };template typena…

Cyclone 1.0

とりあえず、インストール 情報が少なくて、よく判らん。 確か、C magazineに紹介記事が載っていたな。どの号だったかな。 http://cyclone.thelanguage.org/

秀丸エディタ

http://d.hatena.ne.jp/sulpsulpc/20060914に書いたとおり、C99標準プラグマ、OpenMP用及びC++/CLI用の強調定義を追加。 C99,C++,Objective C,C++/CLI OpenMP(C/C++)に対応した強調定義ファイルがとりあえず完成。 これで、Objective C++/CLIなんていうふざ…