读书人

关于vs2008编译有关问题的有关问题

发布时间: 2012-05-30 20:20:04 作者: rapoo

关于vs2008编译问题的问题
我的vs2008以前在编译的时候好好的。,不知为什么昨天晚上跳出一个错误,我忘记了,点的是以后编译不错的也错,我先上代码:

C/C++ code
#include<windows.h>#include<stdio.h>#include<process.h>HANDLE hout;HANDLE hin;//unsigned __stdcall MoveSquare();VOID PrintError(const char *szErr,int iErrCord){    printf("%s:%d\n",szErr,iErrCord);    system("pause");    exit(iErrCord);}int main(){        //设置窗口大小     SMALL_RECT srWindowSize;    CONSOLE_SCREEN_BUFFER_INFO csScrBufInfo;    hout=GetStdHandle(STD_OUTPUT_HANDLE);    if(hout==INVALID_HANDLE_VALUE)        PrintError("hout is invalid",GetLastError());    GetConsoleScreenBufferInfo(hout,&csScrBufInfo);    printf("dwMaximumWindowSize:x=%d,y=%d\n",                csScrBufInfo.dwMaximumWindowSize.X,                csScrBufInfo.dwMaximumWindowSize.Y);    printf("Current window size:left=%d,top=%d,right=%d,button=%d\n",                csScrBufInfo.srWindow.Left,csScrBufInfo.srWindow.Top,                csScrBufInfo.srWindow.Right,csScrBufInfo.srWindow.Bottom);    printf("wAttributes:%d\n",csScrBufInfo.wAttributes);    srWindowSize=csScrBufInfo.srWindow;            //隐藏光标    DWORD dwCurrentSet;    CONSOLE_CURSOR_INFO csCurInfo;    ZeroMemory(&csCurInfo,sizeof(csCurInfo));    csCurInfo.bVisible=FALSE;    if(!SetConsoleCursorInfo(hout,&csCurInfo))        PrintError("SetConsoleCursorInfo error",GetLastError());    hin=GetStdHandle(STD_INPUT_HANDLE);    if(hin==INVALID_HANDLE_VALUE)        PrintError("hin is invalid",GetLastError());    GetConsoleMode(hin,&dwCurrentSet);    if(!SetConsoleMode(hin,~ENABLE_MOUSE_INPUT))        PrintError("SetConsoleMode error",GetLastError());        //设置方块坐标和颜色    COORD crCurPos={        srWindowSize.Right/2,srWindowSize.Bottom/2    };    SetConsoleCursorPosition(hout,crCurPos);    SetConsoleTextAttribute(hout,FOREGROUND_GREEN);    printf("O");         if(!SetConsoleMode(hin,dwCurrentSet))        PrintError("SetConsoleMode error",GetLastError());    CloseHandle(hin);    CloseHandle(hout);}


这代码运行没问题,我在cfree通过,
在vs里有19个错误,错误如下:
1>------ 已启动生成: 项目: C_C++_TEST, 配置: Debug Win32 ------
1>正在编译...
1>square.c
1>e:\c_c++_exercise\free_c_test\square.c(38) : error C2275: “DWORD”: 将此类型用作表达式非法
1> c:\program files\microsoft sdks\windows\v6.0a\include\windef.h(152) : 参见“DWORD”的声明
1>e:\c_c++_exercise\free_c_test\square.c(38) : error C2146: 语法错误 : 缺少“;”(在标识符“dwCurrentSet”的前面)
1>e:\c_c++_exercise\free_c_test\square.c(38) : error C2065: “dwCurrentSet”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(39) : error C2275: “CONSOLE_CURSOR_INFO”: 将此类型用作表达式非法
1> c:\program files\microsoft sdks\windows\v6.0a\include\wincon.h(195) : 参见“CONSOLE_CURSOR_INFO”的声明
1>e:\c_c++_exercise\free_c_test\square.c(39) : error C2146: 语法错误 : 缺少“;”(在标识符“csCurInfo”的前面)
1>e:\c_c++_exercise\free_c_test\square.c(39) : error C2065: “csCurInfo”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(40) : error C2065: “csCurInfo”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(40) : error C2065: “csCurInfo”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(41) : error C2065: “csCurInfo”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(41) : error C2224: “.bVisible”的左侧必须具有结构/联合类型
1>e:\c_c++_exercise\free_c_test\square.c(42) : error C2065: “csCurInfo”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(42) : warning C4133: “函数”: 从“int *”到“const CONSOLE_CURSOR_INFO *”的类型不兼容
1>e:\c_c++_exercise\free_c_test\square.c(47) : error C2065: “dwCurrentSet”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(52) : error C2275: “COORD”: 将此类型用作表达式非法
1> c:\program files\microsoft sdks\windows\v6.0a\include\wincon.h(38) : 参见“COORD”的声明
1>e:\c_c++_exercise\free_c_test\square.c(52) : error C2146: 语法错误 : 缺少“;”(在标识符“crCurPos”的前面)


1>e:\c_c++_exercise\free_c_test\square.c(52) : error C2065: “crCurPos”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(52) : error C2059: 语法错误 : “{”
1>e:\c_c++_exercise\free_c_test\square.c(55) : error C2065: “crCurPos”: 未声明的标识符
1>e:\c_c++_exercise\free_c_test\square.c(55) : error C2440: “函数”: 无法从“int”转换为“COORD”
1>e:\c_c++_exercise\free_c_test\square.c(55) : warning C4024: “SetConsoleCursorPosition”: 形参和实参 2 的类型不同
1>e:\c_c++_exercise\free_c_test\square.c(59) : error C2065: “dwCurrentSet”: 未声明的标识符
1>生成日志保存在“file://e:\c_c++_exercise\VS2008CODETEST\C_C++_TEST\C_C++_TEST\Debug\BuildLog.htm”
1>C_C++_TEST - 19 个错误,2 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

这怎么办,求解

[解决办法]
你的代码我运行没问题,仅仅少个return 0;你建个空工程再试试。

C/C++ code
    #include<windows.h>#include<stdio.h>#include<process.h>HANDLE hout;HANDLE hin;//unsigned __stdcall MoveSquare();VOID PrintError(const char *szErr,int iErrCord){    printf("%s:%d\n",szErr,iErrCord);    system("pause");    exit(iErrCord);}int _tmain(int argc, _TCHAR* argv[]){                    //设置窗口大小     SMALL_RECT srWindowSize;    CONSOLE_SCREEN_BUFFER_INFO csScrBufInfo;    hout=GetStdHandle(STD_OUTPUT_HANDLE);    if(hout==INVALID_HANDLE_VALUE)        PrintError("hout is invalid",GetLastError());    GetConsoleScreenBufferInfo(hout,&csScrBufInfo);    printf("dwMaximumWindowSize:x=%d,y=%d\n",        csScrBufInfo.dwMaximumWindowSize.X,        csScrBufInfo.dwMaximumWindowSize.Y);    printf("Current window size:left=%d,top=%d,right=%d,button=%d\n",        csScrBufInfo.srWindow.Left,csScrBufInfo.srWindow.Top,        csScrBufInfo.srWindow.Right,csScrBufInfo.srWindow.Bottom);    printf("wAttributes:%d\n",csScrBufInfo.wAttributes);    srWindowSize=csScrBufInfo.srWindow;    //隐藏光标    DWORD dwCurrentSet;    CONSOLE_CURSOR_INFO csCurInfo;    ZeroMemory(&csCurInfo,sizeof(csCurInfo));    csCurInfo.bVisible=FALSE;    if(!SetConsoleCursorInfo(hout,&csCurInfo))        PrintError("SetConsoleCursorInfo error",GetLastError());    hin=GetStdHandle(STD_INPUT_HANDLE);    if(hin==INVALID_HANDLE_VALUE)        PrintError("hin is invalid",GetLastError());    GetConsoleMode(hin,&dwCurrentSet);    if(!SetConsoleMode(hin,~ENABLE_MOUSE_INPUT))        PrintError("SetConsoleMode error",GetLastError());    //设置方块坐标和颜色    COORD crCurPos={        srWindowSize.Right/2,srWindowSize.Bottom/2    };    SetConsoleCursorPosition(hout,crCurPos);    SetConsoleTextAttribute(hout,FOREGROUND_GREEN);    printf("O");     if(!SetConsoleMode(hin,dwCurrentSet))        PrintError("SetConsoleMode error",GetLastError());    CloseHandle(hin);    CloseHandle(hout);            return 0;}
[解决办法]
好像这个问题
error C2275: “DWORD”: 将此类型用作表达式非法
主要是缺少定义,加一个定义就可以了,
另外看起来好像你的vc的编译路径有问题,找不到或者是不能正确找到路径
[解决办法]
我编译没任何错误啊.
我也碰到过,重启一下visual studio试试,具体原因我也不清楚哈.

读书人网 >C语言

热点推荐