C++

#include と #define

C++

諸事情で、ある一定の法則性を持っているファイルを沢山 #include とかしたくなったのです。 手書きするとこんな感じ。 #include "../lib_a/lib_a.h" #pragma comment(lib, "../lib_a/release/lib_a.lib") #include "../lib_b/lib_b.h" #pragma comment(lib,…

コンパイルエラー…じゃない?あれ?

C++

void func(const int*& p) { } int main() { int* n = 0; func(n); return 0; } コンパイルが通る… VC7.1、bcc32 で確認。func は cons int* への参照しか取れないと思うのに int* への参照が取れてる…? なんかおかしくね? 取れるとしたら const int* cons…

TextBoxと改行コード

ostringstream を利用して、簡単なログを記録し、それを TextBox (Auto VScroll フラグ付き) に出力しようとしました。 こんなコード。 …あ、ちなみに、TCHAR を使って ascii / unicode を切り替えられるようにしています。 typedef std::basic_ostringstr…

iostream系が分かりません orz

C++

私的には使いづらい C++の標準入出力 iostream クラス(とその家系)。 私と同じ「使いづれぇよ!」 と評判がある一方、「実に美しい実装である」 という評判も聞きます。うまーく STL とかと組み合わせられる知識があれば簡潔なコードが書けるのでしょうが……

ラピュタは本当に存在したんだ!!

C++

先日私のところに 「既存のアプリの機能拡張して欲しい」という依頼がやってきました。 まきまき3のコードが打ちたかったりしましたが 依頼主も他にアテが無いようでしたし、既存のコード量もそう多くはなかったので、依頼を受ける事にしました。 まきまき…

Borlandがああああああああああ!!!

米ボーランドがIDE事業を売却、「Delphi」はどこへ − @IT Borlandが開発ツールを売却、Segue Software買収 - ITmedia NEWS まままままままま マジか!!!???? ボーランド、マジか!? …IDEだけの売却…なの? いや、コンパイラも一緒…なんだろうなぁ。…

VS.NET 2003 と _MSC_VER

asm を使う必要が出てきたのですが、VS2005では インラインアセンブラが禁止されるということで、VS2003 と VS2005 でコードを切り替えようと思ったわけです。ココで出てくるのが _MSC_VER マクロ。 VS2003 で _MSC_VER マクロに対してマウスカーソルをポイ…

落ちるぞぉ〜?orz

こんなコードを書いたのはいいのですが落ちてしまいます。 // この関数からスタート int CHoge::MyCreateThread(HWND hWnd) { SStartupParam sParam = { hWnd, this } _beginthreadex(&ThreadStartFunc, &sParam); // 引数の順番忘れた。(ぉ return 0; } un…

不明な例外を捕らえたい

プロセス間で連携するアプリ達があった時に、ある連携するプロセスが落ちたら、別のプロセスに落ちたことを通知できたら良い感じだよなぁ..... と思ったわけです。WinMainの初っ端から try-catch(...) で囲うのが手っ取り早いとか思ってみるも、それは余りに…

__inline と inline で、しまったぁぁぁぁぁーーー!!

C++

アンスコx2付きの inline と、単に inline 。この2つで何が違うのか? …ぶっちゃけ、両方同じ効果がある模様。(ぉじゃぁなんで2つあるのかというと、"__" からも分かるとわかるとおり、__inline は その環境(今回の場合はMSVC)の独自拡張なわけです。 …

abs関数を使…えない。

C++

絶対値を取ろうとしたので、abs関数を使おうと思ったわけですよ。 INT64 n64; UINT64 n64u = abs(n64); // ↑warning C4244: '__int64' から 'int' に変換しました。データが失われているかもしれません。 ないのかよ! orzMSDNの abs関数のヘルプを見ると C+…

月曜日がやってくるぅ〓…

C++

となると必要になるのが、スコーラの資料作りぃ〓……メドイ…orz今回はポインタの演算について解説する予定。++ したり -- したり。つか最近(1年ぐらい前ですけど:ぉ)知ったんですけど、ポインタってポインタ同士で減算できたんですねぇ。 int an[10]; ptr…

Visual Studio 2005? 2006?

日本語版のRTMリリースは12月中と目されており、それに対してパッケージ版は、2006年の2月頃のリリースとなる模様だ「Visual Studio 2006 日本語版」じゃねーかぁぁぁぁぁぁぁ!!てっきり11月発売かと思ってたのに 「MSDNユーザーは(英語版が)11月1日に入…

やっぱりVCのバグなんだろうなぁ。

C++

ちょっと前に、VC7.1でコンパイルできないコードを紹介しましたが、別の typedefをネストしたコードは通ってみたりしたので、いろいろ実験してみました。 class AAA { public: typedef int value_type; }; class BBB { public: typedef AAA value_type; type…

またVCのバグじゃね?

C++

class AAA { public: typedef int value_type; }; class BBB { public: typedef AAA value_type; }; // ↓error C2146: 構文エラー : ';' が、識別子 'n' の前に必要です。 BBB::value_type::value_type n; Visual Studio .NET 2003 (VC7.1) でコンパイルエラ…

namespace の悲劇

C++

「ふぃふぽん」は、現状でファイル数が500ぐらいあります。単純計算で、クラスが200ぐらいになります。この量だとクラスがごっちゃになってしまいどうしようもなくなってしまう為、最近追加したファイルにはカテゴリごとに namespace を付けるようにし…

例外処理は頭が痛い…

C++

ビルドが完了したということで、いざデバッグ実行してみたのですがー…案の定落ちました。(ぉnamespace を追加しているときに、ちょっとコードを弄くったのでその辺りが影響しているようです。というのが本題ではなく…「ふぃふぽん」は環境によって例外がい…

STL.NET

http://www.microsoft.com/japan/msdn/vs05/visualc/stl-netprimer.asp なる記事を発見! VC++での.NETプログラミングのやる気が増加!そしてコードはより複雑に。(ぉ

templateに悩んで…

template int Func(){ return 0; } template<> int Func(){ return 0; } // 特殊化OK template int Func(){ return 0; } template int Func(){ return 0; } // C2768: 明示的なテンプレート引数はアカン! template int Func() { return 0; } template<> int…

_fgettc の戻り値の型は?

fgetc/fgetwc と getchar/getwchar なんつー関数があり、ASCII/UNICODEを切り替える為の _fgettc, _gettchar があったりします。 それはいいんですが、fgetc/fgetwc (そして getchar/getwchar)って、戻り値の型が int/wint_t(unsigned short) という感じで…

危険なコード

void threadFunc(void*) { std::string strString = "にょ"; // リーク!! _endthread(); } int main() { _beginthread(threadFunc, 0, NULL); // メインスレッドは適当に待ってにょ。 ::Sleep(256); return 0; }このコードは strString がメモリリークします…