あなたがThisIsAHeaderFile.hという名前のヘッダファイルを持っている場合は、次のことがまだVisual Studioでファイルを探します:#includesを使用してVisual Studioのプリプロセッサの大文字と小文字を区別する方法
#include <ThisIsAheaderFile.h>
#include
はエラーになりますように、大文字と小文字の区別を強制する方法はありますか?
あなたがThisIsAHeaderFile.hという名前のヘッダファイルを持っている場合は、次のことがまだVisual Studioでファイルを探します:#includesを使用してVisual Studioのプリプロセッサの大文字と小文字を区別する方法
#include <ThisIsAheaderFile.h>
#include
はエラーになりますように、大文字と小文字の区別を強制する方法はありますか?
Windowsファイルシステム自体が大文字と小文字を区別しないため、できません。
RICHIE.hとrichie.hの両方が存在する状況になる可能性がある場合は、大文字と小文字の区別を制御することは理にかなっていますが、そうではありません。
各ファイルに対してこれを行うためにiF .. includes ... boiler plateを書くことができます。
実際、そうではありません。 NTFSは、POSIX準拠の一部としてファイル名の大文字と小文字の区別を保持しますが、ファイル操作を行うときは大文字にすべてマッピングします。 http://blogs.msdn.com/michkap/archive/2005/01/16/353873.aspx –
C++は、Windows以外のアプリケーションでも動作します。 – WolfmanDragon
FATとNTFSは、大文字と小文字を区別しないファイルシステムです。 FooとfOOは、それらが関係する限り同じファイルです。 Windows OSはファイルに対して使用するケースを保持しますが、ファイルにThisIsAheaderFile.hという名前を付けると、ファイルシステムにそのように表示されます。そのファイルを開くためのすべてのシステム関数呼び出しは、彼らが望む任意のケーシングを使用することができます。
いいえ、NTFSでは大文字と小文字が区別されます(レジストリ設定を使用することもできます)。ただし、Win32では大文字と小文字を区別しません。答えは間違っているので、ちょうどFYIです... – jcolebrand
NTFSで同じ名前でも大文字と小文字の違いがあるファイルを作成することは可能ですか?たぶんcygwinの誰かがこれを確認することができます。その後も
、しかし、それは通常のWindowsアプリケーションから一度これらの1以上にアクセスすることは不可能です。
それをしない本当の良い理由のように聞こえます。 –
Visual Studio内でこれを強制することはできないかもしれませんが、C/C++ソースでプリプロセッサだけを実行してクイックチェックを実装できます。これは、バージョン管理システムでのコミット後のフックとしても実用可能なほど迅速に実行され、ファイル名の大文字小文字が一致していない場合にはエラーとなります。だから、:
は、プリプロセッサのみ(gcc
/g++
と-E
)を実行をサポートするために、Linuxでのビルドシステムを設定
プリプロセッサのみの実装ポストcommitフックとして実行に早期に通知をトリガ責任ある人および/またはこれらのエラーを日常的に修正しようとする人へ
もちろん、これはコードの中央記憶域としてVCSを想定しています。
これは、ではないことを指摘したいと思います。 OPに指摘しようとすると多くの問題が解決します。大文字と小文字を区別しないのはポイントの横にある。ポイントはLorenz03Txがコメントで説明しているように、たとえファイルシステムが大文字小文字を区別しない場合でも、大文字小文字は保持されているため、制御することができます。
このような対策は、クロスプラットフォーム開発を行う際には本当に素晴らしいことですが、他のプラットフォーム用にコードをコンパイルすると作業後に多くのことを防ぐことができます。ビルドプロセスをより冗長にすると、開発者にとってより良い習慣がもたらされることを忘れてはいけません。
TL; DRは
一つの解決策は、単に文を含むソースファイルをスキャンして含む経路に沿って、それらを一致させようとスクリプトを使用することです。このようなスクリプトは、ビジュアルスタジオのポストビルドイベントに追加することができ、したがってすべてのビルドで実行することができます(またはkrlmlrからインスパイアされます)。大文字と小文字を区別するコンパイラのプリプロセッサを使用します。
同じファイル名の2つのバージョンを使用する可能性がありますが、大文字と小文字が異なるUnixコードベースで作業する場合、これが問題になることがありました。 –