ここが変だよ! #Embarcadero C++Builder

C++Builderプロジェクトでmem.hというヘッダーファイルを作ると大変という話。

C++Builderでは,memcpyやmemsetといったCの標準ライブラリー関数を<mem.h>で宣言していて,<string.h>から間接的にインクルードしているのだが,このせいでユーザーがプロジェクトでmem.hというヘッダーファイルを作ると,そちらが使われてしまってmem*系の関数が宣言されないという困ったことになってしまうのである。

Link: mem.h – RAD Studio XE3.

この辺りのことはGNU
libcだと,ユーザーの使うヘッダーからインクルードする非標準のヘッダーは<bits/*.h>の形にしてあって,ので,間違って隠して
しまうことがまずないようになっているので,C++Builderもちょっとは見習ってほしいところである。