windows - Case følsomhed i C + + Header Files

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er en komplet noob når det kommer til C ++, og jeg har været hacking væk på Moai forsøger at tilføje support til en Xbox 360 gamepad via XInput. Når jeg inkluderer overskriften til XInput, er der to muligheder: [11] [12]



  1. XInput
    XInput



og



  1. Xinput
    Xinput



For at kunne bruge XInput skal jeg også medtage windows.h. Alle de eksempler jeg har set bruger følgende syntaks:


#include <windows.h>


Men bilen kompletteres i Visual C ++ Express 2010 indsatser


#include <Windows.h>


Windows.h


I tilfældet med XInput/Xinput ser det ud til, at der er sager om følsomhed, men i tilfældet på Windows.h synes det ikke at være noget.


Er sagen følsomhed spørgsmål, når der indgår header filer? Er der nogen logik på dette?


Er XInput-forskellen simpelthen et spørgsmål om at der er et overskrift for noget, der hedder XInput og et andet noget, der hedder Xinput?

Bedste reference


Sagsfølsomhed i overskriftsnavne og medtag direktiver er implementeringen defineret. Generelt går det ud på, om den platform, du bygger på, er sagerfølsom eller ej.


Jeg skal teste for at være sikker på, men jeg formoder, at hvis du skriver en hvilken som helst sort af 'xinput.h', finder den den der forekommer først i overskriftssøgningspanerne, selvom filen der opstår senere i søgningen Stier er en bedre match i forhold til sag. Dette ville være ret utilsigtet ud fra en udvikler, der ikke er bekendt med disse problemer, fordi det ville betyde, at du kunne bruge en af ​​disse auto-kompletteringer, og VS ville så medtage filen < em> ikke valgt.


Det er også muligt, at VS er smartere end det og vil søge efter den bedste case match.

Andre referencer 1


Det betyder kun, om det underliggende filsystem er sagerfølsomt. Windows-filsystemet er ikke sagerfølsomt, men filsystemerne i operativsystemer som Linux er. Prøv at bruge det nøjagtige faktiske navn på den rigtige fil for at sikre, at din kode fungerer, hvis/når du sender den fra et OS til et andet.

Andre referencer 2


På Windows er filnavne ikke sagerfølsomme, og dette strækker sig til #include. Enhver sag vil gøre.


På nogle platforme (f.eks. Linux) er filnavne sagerfølsomme, så du skal matche det aktuelle filnavn.

Andre referencer 3


Windows er ikke tilfældigt følsomt som andre har sagt. Men det er ikke dit problem. Dit problem er med inklusiv-filindstillinger i Visual Studio. Kompilatoren vil søge efter standardoverskrifter (overskrift inkludering ved hjælp af <> syntaks) i den rækkefølge, de er konfigureret. Start Tools->Options, og kig derefter op Projects and Solutions->VC++ directories og se sekvensen af ​​Include Files.