1

私はmongooseの例で提供されているhello.cをコンパイルしようとしています。エラーが発生し続けます:

mongoose.c:4752:27: error: '_strtoi64' was not declared in this scope

私はmongoose.cを見て、_strtoi64109行目で:で定義されています。

#if defined(_MSC_VER) && _MSC_VER < 1300
#define STRX(x) #x    
#define STR(x) STRX(x)    
#define __func__ __FILE__ ":" STR(__LINE__)
#define strtoull(x, y, z) strtoul(x, y, z)    
#define strtoll(x, y, z) strtol(x, y, z)    
#else    
#define __func__  __FUNCTION__    
#define strtoull(x, y, z) _strtoui64(x, y, z)    
#define strtoll(x, y, z) _strtoi64(x, y, z)    
#endif // _MSC_VER

定義されている場合は外部で定義しようとしましたが、同じエラーが発生します。
私が見た: リンク しかし、私がすでにそこにこの「修正」を持っているコードのバージョンのように見えます。

他のイントロマングースの質問のいくつかを見ましたが、問題は発生していませんでした。

前もって感謝します

4

1 に答える 1

2

Microsoft VisualC++を有効なCコンパイラとは見なしません。C89をサポートします。C89は主にC++とのサブセット互換性があります。ただし、C89以降、C99とC11の2つの標準が採用されています。Cコンパイラが1999年からCコードをコンパイルできないことを示唆するのは不合理です。有効なC99コンパイラはこのコードを正しくコンパイルします。

つまり、Cコンパイラを使用してCコードをコンパイルし、C++コンパイラを使用してC++コードをコンパイルします。一部のCコードをC++プロジェクトにリンクする必要がある場合は、CコンパイラでCコードをコンパイルし、C++リンカーを使用してC++プロジェクトにリンクします。

于 2013-03-26T14:35:29.640 に答える