タグ

ブックマーク / dev.activebasic.com (2)

  • VC++ 2015で作ったDLLをWindows XPで動かすと最悪死ぬ - イグトランスの頭の中

    Visual C++ 2015でコンパイルしたプログラムを試していたところ、Windows XPでプロセスが問答無用で死ぬ現象に見舞われました。いろいろ試してみた結果、およそ原因・回避方法が分かりましたので、ここに書き記します。 条件・症状 次の条件をすべて満たす場合に注意が必要です。 Visual C++ 2015でDLLをビルドする そのDLLはLoadLibraryなどで実行時に読み込まれる Windows XPで実行される このとき、次の新機能のいずれも使ってはなりません。死にます。 thread_local 関数内でのstatic変数 死ぬというのは、プロセスの強制終了のことです。 なお、関数内でのstatic変数のVC++ 2015の新機能とは、初期化処理が複数スレッド対応(コンパイラが適切に排他制御するコードを出力する)になるという、C++11仕様への対応です。参考: sta

    VC++ 2015で作ったDLLをWindows XPで動かすと最悪死ぬ - イグトランスの頭の中
  • C++11時代におけるクラスの書き方 - イグトランスの頭の中

    記事は、C++11 Advent Calendar 2011 : ATNDの2日目の記事です。 C++のclassは様々な使い方ができます。後発のほかの言語ではいくつもの概念に分かれているものも、C++ではすべてclassということもあります。 そこで、C++でclassを定義する際も、classと一括りにせず、自分がいったいどんなclassを書こうとしているのか明確に意識するとよいのではないだろうかと考えました。そのために、私なりのclassの分類をまとめ、この記事を書くことにしました。 これは、各々のプログラミング言語の経験により違いが出ることと思います。異論もあると思いますので、ご自身でも考えてみるとよいと思います。 以下、この記事では4種類に分類しています。 1つ目は「オブジェクト指向プログラミング (OOP) を実現するクラス」です(長いので以下OOPクラスと略します)。 vi

    C++11時代におけるクラスの書き方 - イグトランスの頭の中
  • 1