2

clang++を使用してOSX10.7でVCMIをコンパイルしようとしています。

Appleのgccが必要なフラグCXX=clang++を認識していないようだったので、でプロジェクトを構成しました。-std=c++0x

それがなければ、clangは見つけることさえできなかったので、私はに追加-stdlib=libc++しました。CXXFLAGS#include <array>

現在私は持っています:CXXFLAGS= -std=c++0x -stdlib=libc++ -Wall -Wextra -Wcast-align -Wpointer-arith -Wno-switch -Wno-sign-compare -Wno-unused-parameter -Wc++11-extensions

問題は、次のエラーが発生することです。

clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior    is deprecated
clang: warning: argument unused during compilation: '-ggdb'
StdInc.h:1:9: warning: #pragma once in main file
#pragma once
        ^
In file included from StdInc.h:3:
In file included from ./../Global.h:32:
In file included from /usr/bin/../lib/c++/v1/algorithm:594:
In file included from /usr/bin/../lib/c++/v1/memory:596:
/usr/bin/../lib/c++/v1/iterator:1696:1: error: 'inline' can only appear on functions
inline _LIBCPP_INLINE_VISIBILITY
^
/usr/bin/../lib/c++/v1/iterator:1698:1: error: variable 'begin' declared as a template
begin(_T (&__array)[_N])
^
/usr/bin/../lib/c++/v1/iterator:1698:12: error: use of undeclared identifier '__array'
begin(_T (&__array)[_N])
           ^
./../tchar_amigaos4.h:157:16: note: expanded from macro '_T'
#define _T(x)           x
                        ^
In file included from StdInc.h:3:
In file included from ./../Global.h:32:
In file included from /usr/bin/../lib/c++/v1/algorithm:594:
In file included from /usr/bin/../lib/c++/v1/memory:596:
/usr/bin/../lib/c++/v1/iterator:1698:25: error: expected ';' at end of declaration
begin(_T (&__array)[_N])
                        ^
                        ;
/usr/bin/../lib/c++/v1/iterator:1699:1: error: expected unqualified-id
{
^
1 warning and 5 errors generated.

私はこのようなものを見たことがないことを認めなければなりません。これらはlibc++ソースにあります!誰かが原因が何であるか知っていますか?

4

1 に答える 1

5

あなたの問題はここにあります:

./../tchar_amigaos4.h:157:16: note: expanded from macro '_T'
#define _T(x)           x

コードで_Tという名前のマクロを定義し、次に標準ヘッダーを含めることは、厳密に言えば未定義の動作です。

IIRC、libc ++の新しいバージョンでは、特に_Tという名前の使用を避けています。これは、人々がこれを台無しにする傾向があるためです。したがって、コマンドラインツールの最新バージョンにアップグレードしてみてください。

于 2012-08-15T18:13:18.707 に答える