Microsoft Visual Cppコード集

提供:Software Development Memo
2010年7月5日 (月) 16:13時点におけるAdmin (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動


Microsoft Visual C++ 2008をベースとしています。

TIPS

固定長配列を使用しない文字列の結合(ネイティブ)

const char* c1 = "123";
const char* c2 = "abc";
std::string s = std::string(c1) + c2; // s -> "123abc"

-- 2010年7月5日 (月) 16:10 (UTC)

フォームアプリのデバック中、「出力」ウィンドウにメッセージを出す

System::Diagnostics::Debug::WriteLine("test");

Console::WriteLineでは出力できませんでした。

-- 2010年7月4日 (日) 08:35 (UTC)

deleteによる2重の領域開放をした場合の動作

Test *p = new Test;
p->v1 = 1;
p->v2 = '1';
delete p;
delete p;

Debugビルドの場合、上記のコードを実行すると以下のダイアログが出ました。

Visual cpp 2008 delete error 1.png

Releaseビルドの場合、特別なダイアログも出さず異常終了しました。

Visual cpp 2008 delete error 2.png

-- 2010年7月4日 (日) 10:08 (UTC)

トラブルシューティング

インクルード時に警告が表示され、インクルードに含まれるクラスが使用できない

1>.\StringTest.cpp(2) : warning C4627: '#include <string>': プリコンパイル済みヘッダーの使用を検索中にスキップされました
1>        ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します

対策は、出力の内容通りに「#include "stdafx.h"」を追加することです。ただし、インクルードの先頭行である必要があります。

-- 2010年7月5日 (月) 16:10 (UTC)


更新履歴

  • ページ作成 -- 2010年7月4日 (日) 08:35 (UTC)