1

しばらくの間、2008 でコンパイルできるプログラムがありました。cl と Ultimate++ IDE を使用してプログラムをコンパイルできることに注意してください。これはかなり大きなプログラムなので、ここには掲載しません。Studio でコンパイルできません。

エラーは

1>c:\program files\microsoft visual studio 9.0\vc\include\xstring(1735)
: error C2856: #pragma hdrstop cannot be inside an #if block

そこには hdrstop がないので、ばかげているようです。

プリコンパイル済みヘッダーはオフになっています。

これはそこにあるものです:

            if (_Mysize < _Off)
                _String_base::_Xran();  // _Off off end
            if (_Mysize - _Off < _Count)
                _Count = _Mysize - _Off;
            _Traits_helper::copy_s<_Traits>(_Dest, _Dest_size, _Myptr() + _Off, _Count);
            return (_Count);
            }

        void __CLR_OR_THIS_CALL swap(_Myt& _Right)
            {   // exchange contents with _Right <<<<<<<<----------this is the line 
            if (this == &_Right)
                ;   // same object, do nothing
            else if (_Mybase::_Alval == _Right._Alval)
                {   // same allocator, swap control information

ありがとう。

4

4 に答える 4

3

当てずっぽう。

プロジェクトのプリコンパイル済みヘッダーがオフになっていますか? プロジェクト内のすべてのソース ファイルに対してオフになっていますか (個々のファイル設定がプロジェクト全体の設定を上書きするため)。

于 2010-02-26T15:09:11.050 に答える
3

私はこれを見つけました。プリコンパイル済みヘッダーが原因です。はい、これをオフにする必要はありません。

最上位がブロック#include "headertobeprecompiled.h"内にある場合に発生します。#if #endifその外側に移動できる場合、エラー メッセージは消えます。

于 2011-10-15T09:29:47.417 に答える
0

コードに hdrstop プラグマがないため、まったく同じ問題が発生し、困惑しました。ただし、(IDE ではなく) スクリプトからコンパイルし、コンパイラ オプション /Yc (PCH の作成) を省略すると、エラーは表示されなくなります。

于 2011-09-03T22:32:37.217 に答える
0

Visual C++ は cl を呼び出し (正常に動作します)、明らかにヘッダーがめちゃくちゃになっているため、最初にチェックするのはインクルード パスです。それらをここに投稿してください。

于 2010-02-26T13:53:24.083 に答える