Dev C++ / VS windows 应用程序头问题(菜鸟)
Posted
技术标签:
【中文标题】Dev C++ / VS windows 应用程序头问题(菜鸟)【英文标题】:DevCPP / VS windows app header problem (noob) 【发布时间】:2010-10-28 00:16:11 【问题描述】:我正在学习 Forger 的 win32 教程,使用两个 IDE:Dev C++ 和 Visual Studio 2008。我尝试在两者中复制结果。
对于教程的this 页面,我似乎无法在 Dev C++ 中编译(Visual Studio 工作正常)。这是一个模态对话框。有问题的代码在WndProc
:
case ID_HELP_ABOUT:
int ret = DialogBox(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDD_ABOUT),hwnd,AboutDlgProc); //ERROR OCCURS HERE in Dev C++
if(ret==IDOK) MessageBox(NULL,"Dialog exited with OK","Notice",0);
else MessageBox(NULL,"Dialog exited with EXIT","Notice",0);
break;
它抛出的错误是:
Simple3\main.c In function `WndProc':
Simple3\main.c syntax error before "int"
Simple3\main.c `ret' undeclared (first use in this function)
如果我在此之前定义 int ret;
,它会编译,但会与常规应用程序一起打开一个命令窗口。
我假设我缺少标题。我使用的标头是windows.h
和afxres.h
。谁能帮帮我?提前致谢。
PS - 真正简单的问题 - 在尖括号或引号中声明标题有什么区别?例如。 <windows.h>
或 "windows.h"
?
【问题讨论】:
【参考方案1】:一些编译器希望在 Case 语句和 break 之间添加花括号。尝试使用它。
我认为它应该这样工作。
除了 和 "" 用于声明标头之外,尖括号表示将在 IDE 提到的默认包含目录中搜索文件。而当您希望在本地项目文件夹以及包含文件夹中搜索文件时使用“”。
【讨论】:
这个解决方案会起作用,但不是你想的那样。它之所以有效,是因为他在 case 块中声明了一个变量。如果这个 case 块被跳过,变量将不会被创建,但它应该仍然存在,因为它在同一个范围内。那是个问题。在它周围加上花括号会限制范围,这就是它起作用的原因。 啊,所以这是一个基本的 C++ 问题,而不是编译器问题。将检查并查看(24 小时...)。谢谢!以上是关于Dev C++ / VS windows 应用程序头问题(菜鸟)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 命令提示符下使用 Dev C++ 编译器编译 C++ 程序?