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.hafxres.h。谁能帮帮我?提前致谢。

PS - 真正简单的问题 - 在尖括号或引号中声明标题有什么区别?例如。 <windows.h>"windows.h" ?

【问题讨论】:

【参考方案1】:

一些编译器希望在 Case 语句和 break 之间添加花括号。尝试使用它。

我认为它应该这样工作。

除了 和 "" 用于声明标头之外,尖括号表示将在 IDE 提到的默认包含目录中搜索文件。而当您希望在本地项目文件夹以及包含文件夹中搜索文件时使用“”。

【讨论】:

这个解决方案会起作用,但不是你想的那样。它之所以有效,是因为他在 case 块中声明了一个变量。如果这个 case 块被跳过,变量将不会被创建,但它应该仍然存在,因为它在同一个范围内。那是个问题。在它周围加上花括号会限制范围,这就是它起作用的原因。 啊,所以这是一个基本的 C++ 问题,而不是编译器问题。将检查并查看(24 小时...)。谢谢!

以上是关于Dev C++ / VS windows 应用程序头问题(菜鸟)的主要内容,如果未能解决你的问题,请参考以下文章

C++编译器

如何在 Windows 命令提示符下使用 Dev C++ 编译器编译 C++ 程序?

dev c++配置问题,如题

C++ 通用 Windows 应用程序仅在安装驱动器上的 VS2015 项目时有效

Dev - C++ 安装(mac/windows)

请问在 Dev C++ 里编写的 Windows 程序,为啥原先可以编译的,但修改了之后再改回来就不能编译了呢?