Archive for 6月, 2009

下記のコードは、普通に通るよね。

C++:
  1. #include <boost/shared_ptr.hpp>
  2. #include <iostream>
  3.  
  4. int main(int argc, char** argv)
  5. {
  6.     boost::shared_ptr<int> p;
  7.     if (p == NULL) {
  8.         std::cout <<"null" <<std::endl;
  9.     }
  10.  
  11.     return 0;
  12. }

んで、NULL を置き換えてたらコンパイラが落ちました。

C++:
  1. //! ぬるぽ
  2. //! http://ja.wikibooks.org/wiki/More_C%2B%2B_Idioms/nullptr
  3. // const オブジェクトであって、
  4. const class nullptr_t
  5. {
  6. public:
  7.     // 任意の非メンバ型のヌルポインタや、
  8.     template<class T> operator T*() const { return 0; }
  9.  
  10.     // 任意のメンバ型のヌルポインタに変換可能であって、
  11.     template<class C, class T> operator T C::*() const { return 0; }
  12.  
  13. private:
  14.     void operator&() const// アドレスを取得することができない。
  15. } nullptr = {};
  16.  
  17.  
  18. //! NULL 値
  19. #undef  NULL
  20. #define NULL nullptr
  21.  
  22. #include <boost/shared_ptr.hpp>
  23. #include <iostream>
  24.  
  25. int main(int argc, char** argv)
  26. {
  27.     boost::shared_ptr<int> p;
  28.     if (p == NULL) {
  29.         std::cout <<"null" <<std::endl;
  30.     }
  31.  
  32.     return 0;
  33. }

fatal error C1001: コンパイラで内部エラーが発生しました。
(コンパイラ ファイル 'msc1.cpp'、行 1393)
この問題を回避するには、上記の場所付近のプログラムを単純化するか変更してください。
詳細については、Visual C++ ヘルプ メニューのサポート情報コマンドを
選択してください。またはサポート情報 ヘルプ ファイルを参照してください。

何も落ちなくてもなぁ。。
ちなみに if (p != NULL) でも落ちました。

新型来たね。
最近本体料金を異常に安くしてたけど、やっぱ新型が出るからだったんだね。
旧型買ってしまった人は2年契約なわけで。やるな Apple。

新型も安い。16Gモデルが19800, 32Gモデルが29800円。
ちょっと考えてしまうなぁ。
http://www.apple.com/jp/iphone/iphone-3g-s/

mac book も安くなって、Apple 素敵です。

メモメモ。
riece でircサーバと ustream の共存設定。

環境:
Mac OS X 10.5.7
GNU Emacs 22.3.1 (i386-apple-darwin9.6.0, Carbon Version 1.6.0)

おもしろWEBサービス開発日記を参考にしながら最新のriece-6.0.0.tar.gz で試したけど、そのままじゃうまく動かなかった。

下記のように設定することでうまく動作した。

;; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-

(add-to-load-path "~/.emacs.d/elisp/riece/lisp")
(load "riece")

(setq riece-server-alist
'(("ircnet" :host "irc.tokyo.wide.ad.jp" :service 6668 :nickname "NICKNAME")
("ustream" :host "chat1.ustream.tv" :service 6667 :nickname "NICKNAME" :username "USERNAME" :password "PASSWORD" :coding utf-8)
))

(setq riece-server "irc.tokyo.wide.ad.jp")
(setq riece-nickname "NICKNAME")
(setq riece-startup-server-list '("ustream"))

(setq riece-startup-channel-list
'("#channel_1" "#channel_2" "#channel_3" "#channel_ust ustream"))