2012-03-24 3 views
2

私は、Windowsと* nixの両方のC++アプリケーションをビルドしようとしています。 VC++がまだサポートしていないC++標準の部分(variadicテンプレートや他のいくつかの機能など)を実際に使用できるかどうかは、一歩一気にすべてがうまくコンパイルできることをテストすることに加えて、私は疑問に思っています。GCCを使って* nixからWindowsにクロスコンパイルすると、VC++でまだサポートされていない機能が使用できますか?

これは可能でしょうか?ロジックはこれがそうであると指示するようですが、gccがクロスコンパイル段階の一部としてこれらのものを生成するいくつかのウィンドウ固有のツールを必要とするかどうかに依存していると思います。

+0

* nixとは何ですか?それはUNIXに匹敵しますか? – stefaanv

+0

@stefaanv: '* nix'は、 'Linuxを含むUnixの様々な亜種'を意味する略語です。 –

答えて

3

することは、私は思ったんだけど。

はい。最終的な実行ファイルにとって重要なことは、VC++が何を行うことができるのではなく、コンパイラがどのコードを生成し、リンクするかです。

ただし、プラットフォームの具体的な手順と方法に注意してください。

+0

CRTと標準のC++ライブラリに実装されているC++ 11の完全なチェックサムがあります。コンパイラだけではありません。 –

+0

@ハンス:指摘するのは良い - それを反映するように編集されている(IMOとして、これは "はい"自体に影響しない) – peterchen

2

まず、標準C++で書いた場合、遅かれ早かれVC++がwatheverが見つからない場合に追いつく予定です。第二に、ウィンドウの下でVC++を使用するよう強制されません。 Windowsにgccを移植したMinGWを使うことができます。一般的に

、ポータブルソフトウェアを書くとき、あなたが知っておくべき二つのものがあります。

  • アーキテクチャ固有の操作:ソフトウェアの移植を行うためには、あなたが特定のアーキテクチャに依存しないでください。たとえば、long intが32ビットであると仮定します。
  • オペレーティングシステムの操作:これはおそらくもっと問題になり、処理するのが難しいでしょう。たとえばディレクトリを作成するなど、OS固有の操作がある場合は、独自の関数を作成する必要があります。その中には、コンパイル対象のOSに基づいて異なるタスクを実行する#ifdefがあります。そのような可変引数テンプレートやその他のいくつかの特徴として - これは実際に私は、VC++はまだサポートしていないことをC++標準の部品を使用することができます場合