【问题标题】:DevCPP / VS windows app header problem (noob)Dev C++ / VS windows 应用程序头问题(菜鸟)
【发布时间】: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" ?

【问题讨论】:

    标签: c++ dev-c++


    【解决方案1】:

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

    我认为它应该这样工作。

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

    【讨论】:

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