...
- 大域スコープのシンボルは作らない(必ず名前空間を使う)
- ヘッダでは
using
禁止 cpp ファイルでは無名名前空間でローカルシンボルをくくる
C ではstatic
でしたが、C++ では無名名前空間を使うのがスマートです。コード ブロック cpp cpp const int CONSTANT = 3; // const はデフォルトでファイルローカルスコープ namespace { // 無名の名前空間 void do_something() { // 無名名前空間の名前は他のコンパイル単位からは参照不可能 } } int main(int argc, char** argv) { // main は見えるようにする do_something(); return 0; }
C ライブラリも
std
名前空間へのラッパーを極力使う
c.f. http://www.cplusplus.com/reference/clibrary/コード ブロック cpp cpp #include <cerrno> <cstddef> // std::errnosize_t など #include <cstddef><cstdlib> // std::malloc, std::size_tfree など
※2013-12-27
std::errno
は存在しないので修正しました
警告は必ずなくす
C++ 以外にも言えることですが、コンパイラはの警告は 0 にしておきましょう。放置すると、深刻なものも見逃します。
g++
なら -Wall -Wnon-virtual-dtor -Woverloaded-virtual
をつけるのを推奨します。
...