Visual C++ 2005 で strcpy 等を
strcpy(s, "i");
のように書くと、コンパイル時に
「warning C4996: 'strcpy' が古い形式として宣言されました。」
という警告文が出ます。
これは、strcpy関数自体の書き方が古いわけではなく、VC++2005から以下のような、よりセキュアな書き方に変更されたためみたいです。
strcpy_s(s, sizeof(s), "i");
この変更はC言語標準の書き方ではないため、LinuxとかVC++2005以前のVCならコンパイルは通らないです。
でも、環境ごとに書き換えるのはメンドイので、
以下の文をヘッダーファイルの下辺りに書くことで対応できるみたいです。
#if _MSC_VER < 1400
#define strcpy_s(a, b, c) strcpy(a, c)
#define strcat_s(a, b, c) strcat(a, c)
#define strncpy_s(a, b, c, d) strncpy(a, c, d)
#define _strlwr_s(a, b) strlwr(a)
#define sprintf_s(a, b, c) sprintf(a, c)
#define scanf_s(a, b, c) scanf(a, b, c)
#define sprintf_s(a, b, c, d) sprintf(a, c, d)
#endif
1400 は VC++2005(VC++8.0)を示す値です。
とりあえず思いついたのをいくつか書いただけなので、足りないのもあるし、間違ってるかもしれませんが、
自分が忘れないためのメモとして、残しておきます。
なんか最近、マニアックなことばっか書いてる気が・・・