C/C++

プログラムが終わってもコマンドプロンプトを閉じないようにする

上の画像,Visual StudioがCUIアプリケーションをデバッグ実行したときのもの. 「続行するには...」の部分はVisual Studioが自動的に追加するもので, プログラムが終わっても勝手にコマンドプロンプトが閉じないようになっています.何気にありがたい機能…

QString::toStdString() のバグ

いきなりですが,次のコードはWindows環境でバグることがあります. #include <QtCore/QString> #include <string> ... { ... // その1 QString qtstr(tr("foobar")); std::string stdstr; stdstr = qtstr.toStdString(); // だめ ... // ここでヒープが壊れる } { ... // その2 QStr</string></qtcore/qstring>…

qtmain.libの謎

QtでWindowsのGUIアプリケーションを作ってて疑問に思ったことがひとつ.Qtはmainから処理を開始するのですが,WindowsでGUI開発するときのエントリポイントといえばWinMainです.エントリポイントが標準じゃないせいで移植性の問題が発生するんですが,Qtは…

VC++ランタイムが不要なPython DLLのビルド

Windows環境でPythonを組み込んだアプリケーションを開発してたんですが、Windows用インストーラでsystem32にコピーされるDLL(python**.dll)は、どうやらVC++ランタイムが必要なようです。そう、Microsoftから「再頒布可能パッケージ」という名前でダウン…

boost::spirit::leaf_node_dのバグ

boost 1.47.0のspirit(Qiじゃなくて古い方)で、ある言語のパーサを作ってたんですが、次のような構文規則 identifier = leaf_node_d[ lexeme_d[(alpha_p | '_') >> *(alnum_p | '_')] - keywords ]; を書いたところ、どうもうまく動作しない。 具体的にど…

クライアント領域のサイズからウィンドウ全体のサイズを設定する

ちょっとTwitterで流れてたので書いておく。 Win32 APIでウィンドウのサイズを操作する場合、クライアント領域と非クライアント領域というものを常に意識しなければならない。 たとえば次のようなウィンドウがあったとする。 クライアント領域というのは我々…

多項式の計算で乗算を増やさない方法

数値計算なんかをプログラムで書いてると、多項式の値を求めたいことがよくある。 たとえば次の多項式これを計算するコードは、たとえば次のようになる。 // C/C++ f = x*x + 2*x + 3; もう少し一般的に、次の多項式について、と係数の配列からを計算する関…