用于GCC和MS Visual C ++的C程序仅适用于GCC
我试图让我的作业在GCC和MS VS环境中工作,但由于某种原因,它无法在MS VS编译...
错误是:
警告C4627:'#include':在寻找预编译头文件时跳过使用 - 将指令添加到'Stdafx.h'或重建预编译头文件
要么
意外的#endif(#包括“Stdafx.h”之后的那个)
要么
当我把“Stdafx.h”标题放到第一行时,它的行为就像没有stdio一样,一切(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条件中的#includes有关,但我不知道如何正确执行它。
任何人都可以请纠正我如何使这项工作正常? 欢迎任何有用的建议,谢谢!
你的文件应该像下面这样开始,必须首先包含“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__
如果这不起作用启动Build - Rebuild Solution命令。
如果这不起作用,您可以像这样删除预编译头文件:
上一篇: C program for GCC and MS Visual Express C++ works only for GCC