C/C++

プログラミング

Google TestのASSERT_EQとEXPECT_EQの違い

普段C++のユニットテストはGoogle Testを使って書くことが多いのですが、ちょっと時間が空くと諸々仕様忘れて同じこと何回も調べなおしてる気がするので、自分がちょいちょいハマる仕様を順次残していこうかと思います。 ASSERT_*とE...
プログラミング

Xcode付属のclangだとC++のfilesystemは動かなかった話

以前Windowsで書いたC++のコードをMacで動かそうとしたら「filesystemなんてないよ!!」ってclangコンパイラに怒られてちょっと調査したので、その調査メモです。 先に結論を書いておくと、Xcode付属のclangだとどう...
プログラミング

yaml-cpp 0.6.2をVisual Studio 2017以降でビルドする

ちょっとyaml形式でログを吐きたくてyaml-cppを使ってみようと思ったものの、ビルドではまったので対応メモです。 まずは普通にビルド yaml-cppはCMakeLists.txtを持っているため、CMakeを使えば簡単にVisual...
プログラミング

OpenCVのcv::viz::writeCloudがis_block_type_valid(header->_block_use)とか_CrtlsValidHeapPointer(block)で落ちる

Visual Studio 2017でC++を書いて実行したら何やらエラーで落ちてしまいました。どうにもOpenCVの関数であるcv::viz::writeCloudを呼び出したときに落ちてるらしいことはわかったものの、解決するまでちょっと...
プログラミング

Visual C++でM_PI(円周率)を使う

Visual C++で円周率の定義M_PIなどを使う場合、gccなどと同じ風に使おうとするとM_PIが見つからないと怒られてしまいます。毎回Visual C++の場合どうやって書くんだっけなーとググって解決しているので、対応方法をまとめてお...
プログラミング

C言語のフレキシブル配列メンバ(flexible array member)、通称struct hack

PHPの内部実装がC言語なのは周知の事実かと思いますが、最近仕事でPHP7の内部実装をみる機会がありました。 そこで学んだC言語のflexible array member、通称struct hackというテクニックがなかなか面白かったので...