0

Windows で stl ヘッダーと clang を使用して、かなり単純な「hello world」プログラムをコンパイルしようとしていますが、それができません。

VC11 Beta を使用してリポジトリから Clang 3.1 を問題なくコンパイルしました。現在、コンパイル済みの Clang を使用して、VC11 ヘッダーを使用して「hello world」サンプルをコンパイルしようとしていますが、VC11 でシミュレートされた可変個引数テンプレートのマクロ マジックで Clang が失われていることを示すようなエラーが多数表示されます。私はこのマクロ マジックを直接利用しているわけではありません。

私のインクルードディレクトリ:

  • C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
  • C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include
  • C:\Program Files (x86)\Windows Kits\8.0\Include\um
  • C:\Program Files (x86)\Windows Kits\8.0\Include\shared
  • C:\Program Files (x86)\Windows Kits\8.0\Include\winrt

次のようなエラーが表示されます。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef:1094:24: エラー: '_Nil' は値を参照していません

そして、マクロに関連するその他の束。

誰かがこのマクロの問題を克服できましたか? このマクロを展開する際に、clang プリプロセッサに問題はありますか?

4

2 に答える 2

1

Microsoft の C++ ヘッダーには、まだサポートされていない拡張機能と特異性が含まれています。Clang は Windows で C ヘッダーを使用してプログラムをビルドできますが、C++ ヘッダーはまだビルドできません。

C ランタイムは動作するため、C ランタイムのみに依存する別の C++ 標準ライブラリを使用できる場合があります。私は試していませんが、おそらく libc++ はそのように使用できます。

于 2012-04-12T18:23:25.460 に答える
0

C:\Program Files (x86)\Windows Kits\8.0\Include\winrt. その理由は、Windows 8 が何らかの拡張機能を備えた C++ バージョンを提供するためです。このバージョンはC++/CXと呼ばれています。

一部の拡張機能 ( ref classなど) は標準 C++ ではありません。これにより、ビルド時にいくつかの可変個引数テンプレートをコンパイルしようとしているというメッセージが表示されると思います。

于 2012-04-12T18:01:56.307 に答える