2016-04-15 10 views
0

Ich versuche, meine Schulaufgabe in GCC und MS VS-Umgebungen arbeiten zu lassen, aber aus irgendeinem Grund kompiliert es nicht in MS VS ...C-Programm für GCC und MS Visual Express C++ funktioniert nur für GCC

Die Fehler sind:

Warnung C4627: '# include': übersprungen, wenn für vorkompilierte Header Verwendung suchen - Add-Richtlinie zu 'Stdafx.h' oder umbauen vorkompilierte Header

oder

unerwartete #endif (die nach #include "stdafx.h")

oder

Als ich den "Stdafx.h" Header erste Zeile setzen, verhält es sich wie kein stdio ist und alles (HANDLE, int, etc.) ist eine illegale Deklaration.

#include <stdio.h> 
#include <stdlib.h> 

#ifdef _MSC_VER 
    #include "Stdafx.h" 
    #include <windows.h> 
#endif // _MSC_VER 

#ifdef __GNUC__ 
    #include <unistd.h> 
#endif // __GNUC__ 

#ifdef _MSC_VER 

int main() 
{  
    printf("___MS VS Studio/Express compiler___\n"); 

    /*some stuff here*/ 
    return 0; 
} 
#endif //_MSC_VER 

#ifdef __GNUC__ 

int main() 
{ 
    printf("___GCC compiler___\n"); 
    /*some other stuff here*/ 
    return 0; 
} 
#endif // __GNUC__  

Es funktioniert gut auf GCC und ich vermute, dass es etwas mit den #includes in #ifdef Bedingungen in MS VS zu tun hat, aber ich weiß nicht, wie es ..

richtig zu tun jemand Kann bitte korrigieren wie kann ich das richtig machen? Jeder nützliche Rat willkommen, danke!

+0

Bitte zeigen Sie Ihre „Stdafx.h“ Datei –

+0

// stdafx.cpp: Quelldatei, die nur die Standard // project.pch die vorkompilierte Header wird enthält enthält // stdafx.obj enthalten die vorkompilierte Typinformationen #include „stdafx.h“ // TODO: keine zusätzliche Header verweisen Sie in sTDAFX.H // und nicht in dieser Datei benötigen – need4C

Antwort

0

Ihre Datei sollte wie folgt beginnen, die Datei "stdafx.h" muss zuerst eingefügt werden. Dies wird von der Funktion "Vorkompilierte Header" von Visual Studio benötigt.

#ifdef _MSC_VER 
    #include "Stdafx.h" 
    #include <windows.h> 
#endif // _MSC_VER 

#include <stdio.h> 
#include <stdlib.h> 


#ifdef __GNUC__ 
    #include <unistd.h> 
#endif // __GNUC__ 

Wenn dies nicht zu tun workmtry die Erstellen starten - Rebuild Lösung Befehl.

Wenn dies nicht funktioniert, Sie vorkompilierte Header wie folgt entfernen:

  • Starten Sie das Projekt - Eigenschaften Befehl
  • Im C/C++ - Precompoiled Headers Registerkarte klicken Sie auf " Vorkompilierte Header "und wählen Sie" Keine vorkompilierten Header verwenden ".
+0

es immer noch nicht, viele Fehler kompilieren wie "Fehler C2275: 'HANDLE': illegale Verwendung dieses Typs als Ausdruck" kommt .. Der Code sollte korrekt sein und es kompiliert in MS E, wenn ich nicht Verwende die #ifdef-Makros. – need4C