2016-04-15 119 views
0

我試圖讓我的作業在GCC和MS VS環境中工作,但由於某些原因,它無法在MS VS中編譯...用於GCC和MS的C程序Visual C++僅適用於GCC

的錯誤是:

警告C4627: '#包括':跳過尋找預編譯頭使用時 - 添加指令 '的Stdafx.h' 或重建預編譯頭

意外#ENDIF(#包括後一個文件「StdAfx.h」)

當我把「Stdafx.h中」頭第一線,它的行爲像有沒有標準輸入輸出和一切(HANDLE,INT等)都是非法聲明。

#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__  

它工作正常,在GCC,我懷疑它是與在MS VS的#ifdef條件#包括,但我不知道怎麼做是正確的..

誰能請糾正我如何使這項工作正常? 歡迎任何有用的建議,謝謝!

+0

請出示你的「的Stdafx.h」文件 –

+0

// stdafx.cpp:只包括標準包括 // project.pch將作爲預編譯頭 // StdAfx.obj的將包含源文件預編譯類型信息 的#include「stdafx.h中」 // TODO:引用您在STDAFX.H 需要//而不是在此文件中的任何附加頭 – need4C

回答

0

你的文件應該像下面這樣開始,必須先包含「stdafx.h」文件。這是Visual Studio的「預編譯頭文件」功能所必需的。

#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__ 

如果不workmtry做啓動建設 - 重建解決方案命令。

如果這不起作用,你可以刪除這樣的預編譯的頭:

  • 啓動的項目 - 屬性命令
  • C/C++ - Precompoiled頭選項卡點擊「預編譯頭文件「並選擇」不使用預編譯頭文件「。
+0

它仍然無法編譯,錯誤很多像 「錯誤C2275:'處理':非法使用這種類型作爲表達式」 出現..代碼應該是正確的,它編譯MS E時,我不使用#ifdef宏.. – need4C