MSVSで#include<someHeader>を実行すると、#include"someheader"に含まれているヘッダーとは別のフォルダーで検索されます。同じことがxcodeにもあるはずですが、機能しないようです。このため、stdヘッダー(String.hなど)と同じ名前のローカルヘッダーと競合し、stdヘッダーを含めることができません。プロジェクトオプション「常にユーザーパスを検索する」を変更しようとしましたが、それでも機能しません。このオプションからのヘルプメッセージは、それが私の問題を解決するだろうと言っていますが...
有効にすると、#include<header.h>スタイルと#include"header.h"スタイルの両方のディレクティブが「HeaderSearchPaths」の前にある「UserHeaderSearch Paths」のパスを検索し、その結果、ユーザーヘッダー( #include <header.h>を使用する場合、独自のString.hヘッダーとして)がシステムヘッダーよりも優先されます。これは、「ユーザーヘッダー検索パス」で提供されるパスの-iquoteフラグを使用して行われます。無効になっていて、コンパイラが個別のユーザーパスを完全にサポートしている場合、ユーザーヘッダーには次の方法でのみアクセスできます。
「header.h」スタイルのプリプロセッサディレクティブをインクルードします。
下位互換性の理由から、この設定はデフォルトで有効になっていますが、無効にすることを強くお勧めします。[ALWAYS_SEARCH_USER_PATHS]
これを解決する方法を知っていますか?ヘッダーファイルの名前を変更したり、プロジェクト設定から検索パスを削除したり、ローカルファイル(../../ ... /SomeFolder/SomeHeader.h)への相対パスを使用したりしたくありません。