1

という関数を持つ CVUtil という名前のクラスを含む古いプロジェクトをコンパイルしようとしていますStrToInt(char *, int *)。この関数は、構文 を使用してプロジェクト内の複数の場所で呼び出されます CVUtil::StrToInt(pSomeChar,pSomeInt)。このプロジェクトをコンパイルしようとすると、ファイル Shlwapi.h が含まれており、その中にプリプロセッサ ステートメントがあるため、 VisStudio は次のように変更StrToIntされます。関数の名前を変更するだけでこれを回避できることはわかっていますが、それを行わずにこれを回避する方法を知りたいです。よろしく、 アルニStrToIntA
"#define StrToInt StrToIntA"

4

3 に答える 3

1

#undef StrToIntクラス定義を含むヘッダーで行うこともできますが、正しい方法は関数の名前を変更することです。

于 2012-09-28T10:05:25.053 に答える
0

以前の定義はいつでも定義解除できます。

#ifdef StrToInt
#undef StrToInt
#endif
#define StrToInt StrToIntA

ただし、より良い方法は、別の名前を選択することです。

于 2012-09-28T10:05:18.947 に答える
-1

リンカーの設定を調整することをお勧めします。*A (アスキー) および *W (ワイド) 関数の詳細については、 http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etcを参照してください。この記事では、ビジュアル スタジオの設定を調整する方法について説明します。

ディレクティブ

#define fun funA

次のようなもので保護する必要があります。

#ifdef _UNICODE
# define fun funW
#else
# define fun funA
#endif
于 2012-09-28T10:11:23.093 に答える