5

Sto lavorando con un'API che ha #define e tutti i file di inclusione. Sto sviluppando in Visual C++ 2010 Express e fino ad ora ha funzionato bene.Visual C++ Express 2010 improvvisamente non accetterà #includes

Stavo aggiungendo un nuovo file cpp al progetto e, per errore, ho aggiunto un "Windows Form". VC mi ha avvertito che il mio progetto non stava usando CLR al momento, volevo davvero? Ho fatto clic su no e ho aggiunto il file come previsto. Successivamente, tuttavia, il mio progetto non viene più compilato.

Il codice appare sostanzialmente in questo modo:

api_header.h:

#define DEFINED_HEADER_NAME "path/to/header/file.h" 

stdhpf.h:

#include DEFINED_HEADER_NAME 

Come ho già detto, ha funzionato bene per un lungo tempo. Ora io ottenere questo:

errore C2006: '#include': atteso un nome di file, trovato 'identifier'
irreversibile C1083 di errore: Impossibile aprire il file include: '': No such file or directory

cosa sta causando questo ? Ho trovato alcuni post che dicevano che era per aver attivato le intestazioni precompilate, ma ho controllato Project properties > Configuration properties > C/C++/Precompiled headers, ed è spento (cito il percorso di impostazione da quando sono nuovo a VS, potrebbe esserci più di un modo per farlo .. .).

Qualche idea?

risposta

7

il problema risiede quasi certamente nell'ordine in cui le due affermazioni sono pre-elaborati, piuttosto che avere a che fare con inavvertitamente l'aggiunta di un oggetto Windows Form.

This knowledge base article suggerisce:

Il problema è nell'uso di una costante definita per specificare un file di includere nella direttiva #include. La direttiva viene elaborata prima che la macro sia completamente espansa, causando l'errore.

Il secondo errore sembra confermare questa, in quanto indica il pre-processor è alla ricerca di un file di inclusione con un nome vuoto:

fatal error C1083: Cannot open include file: '': No such file or directory 
0

l'ordine dei file include è cambiato. Forse Visual Studio ha inserito un #include "stdhpf.h" da qualche parte davanti al tuo #include "api_header.h".

0

Disabilita le intestazioni precompilate. Dovrebbe essere d'aiuto

Problemi correlati