随机数gen-未声明的标识符

时间:2012-08-10 23:59:16

标签: c random identifier

到目前为止,我很难将部分程序代码放在一起

#include <windows.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define MAX_BUFF_SIZE 1024
#define IDM_FILE_RUN 40001
#define IDM_APP_EXIT 40002

//Window Function
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);


int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, 
               LPSTR lpszArgs, int nWinMode)
{

WNDCLASS wcls;
HWND hwnd;
MSG msg;

// Name of window and window class
LPCWSTR szWinName   = L"Threads Program";
LPCWSTR szClassName = L"ThreadsProgram";


wcls.hInstance = hThisInst;
wcls.lpszClassName = szClassName;
wcls.lpfnWndProc = WindowFunc;
wcls.style = 0;
wcls.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcls.hCursor = LoadCursor(NULL, IDC_ARROW);
wcls.lpszMenuName = NULL;
wcls.cbClsExtra = 0;
wcls.cbWndExtra = 0;
wcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

// Register windows class
if(!RegisterClass(&wcls))
{
    return 0;
}

// Create main window
hwnd = CreateWindow(szClassName,
    szWinName,
    WS_OVERLAPPEDWINDOW,
    100,
    100,
    400,
    400,
    HWND_DESKTOP,
    NULL,
    hThisInst,
    NULL );

// Show main window
ShowWindow(hwnd, nWinMode);
UpdateWindow(hwnd);

// Message loop
while(GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return (int)msg.wParam;
}



LRESULT CALLBACK WindowFunc(HWND hMainWindow, UINT message, 
                        WPARAM wParam, LPARAM lParam)
{
static char textBuffer[MAX_BUFF_SIZE];
static int nRead;


switch(message)    
{
case WM_CREATE:
    {
        HMENU hMenu;
        HMENU hMenuPopup;

        // create menus
        hMenu = CreateMenu();
        hMenuPopup = CreateMenu();

        // populate menus
        AppendMenu(hMenuPopup, MF_STRING,  IDM_FILE_RUN,   L"&Choose Balls");   
        AppendMenu(hMenuPopup, MF_STRING,  IDM_APP_EXIT,   L"&Exit");  
        AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hMenuPopup,   L"&File");

        // attach menus to main window
        SetMenu(hMainWindow, hMenu);
    }
    break;
case WM_COMMAND:
    {
        // Obey command
        switch(LOWORD(wParam))
        {
        case IDM_FILE_RUN:

            {
                srand (time(NULL));
                for (int i = 0; i < 6; i++)
                    printf ("%i\n", (rand ()% 49) + 1);  




    return 0;

            }
            break;
        case IDM_APP_EXIT:
            SendMessage(hMainWindow, WM_CLOSE, 0, 0);
            break;
        }
    }
    break;
case WM_DESTROY:
    PostQuitMessage(0);
    break;
default:
    return DefWindowProc(hMainWindow, message, wParam, lParam);
}
return 0;
}// Window function

错误消息说我有一个未声明的标识符及其与我的随机数部分相关,

case IDM_FILE_RUN:              
            {
                srand (time(NULL));
                for (int i = 0; i < 6; i++)
                    printf ("%i\n", (rand ()% 49) + 1);  

                return 0;
            }

我不确定我需要写什么以及我需要写它来修复它。

由于

Error   9   error C2059: syntax error : ')' 108 1
Error   6   error C2065: 'i' : undeclared identifier    108 1
Error   8   error C2065: 'i' : undeclared identifier    108 1
Error   4   error C2143: syntax error : missing ')' before 'type'   108 1
Error   2   error C2143: syntax error : missing ';' before 'type'   108 1
Error   3   error C2143: syntax error : missing ';' before 'type'   108 1
Error   5   error C2143: syntax error : missing ';' before 'type'   108 1

1 个答案:

答案 0 :(得分:0)

这可能是一个长镜头,但改变你的当前for循环看起来像这样:

  int i;
  for (i = 0; i < 6; i++)
    ...

可能是你的编译器不喜欢在for中声明变量(除非我给它一个特殊的命令行选项,否则我不会这样做)