Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выходит ошибка, что это значит? error C2601: 'WinMain' : local function  
:(
    Опции темы
Rusman
Дата 12.11.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.5.2006
Где: Пермь

Репутация: нет
Всего: нет



Выходит такая ошибка : error C2601: 'WinMain' : local function definitions are illegal
Что она значит?
PM MAIL ICQ Skype   Вверх
JackYF
Дата 12.11.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Тебе в раздел по Visual C++ либо "Системное программирование и WinAPI". Это раз.
Два. Приводи код программы, ОС, компилятор и его версию.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
DjoNIK
Дата 12.11.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: нет
Всего: 5



MSDN на запрос по коду ошибки:
Код

'function' : local function definitions are illegal

Code tries to define a function within a function.

Or, there may be an extra brace in your source code before the location of the C2601 error.

Example

Код

// C2601.cpp
int main()
{
   int i = 0;

   int funcname(int j)  // C2601
   {
      j++;
      return j;
   }
   
   i = funcname(i);
   return 0;
}



Добавлено через 1 минуту и 59 секунд
Цитата(JackYF @  12.11.2007,  20:25 Найти цитируемый пост)
Приводи код программы, ОС, компилятор и его версию.

Ну компилятор здесь судя по сообщению об ошибке - VC++ 7.1 или 8.0



--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Rusman
Дата 12.11.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.5.2006
Где: Пермь

Репутация: нет
Всего: нет



Код

#include <windows.h> // это, сами понимаете для того что б win заработало

#include <gl/gl.h> // OpenGL
#include <gl/glu.h> // GLU
 

static HGLRC hRC; // Это контекст рендеринга
static HDC hDC; // А это стандартный контекст устройства windows

BOOL keys[256]; // это массивчик, который нам пригодится 
// для обработки нажатия клавиш


GLvoid Initial(GLsizei Width, GLsizei Height); 
// по названию ясно, это инициализация всей страны (т.е. OpenGL)

GLvoid Resize(GLsizei Width, GLsizei Height);
// эта маленькая функция будет вызываться при получении окном сообщения WM_SIZE

GLvoid Draw(GLvoid); // это центр вселенной для OpenGL

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
// Ну это все и так знают. Функция окна в Win32


GLvoid Initial(GLsizei Width, GLsizei Height)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// устанавливаем цвет для очистки буфера цвета
glClearDepth(1.0); // устенавливаем параметр для очистки буфера глубины
glDepthFunc(GL_LESS); // настройка Z буфера
glEnable(GL_DEPTH_TEST); // и, наконец, включение

glShadeModel(GL_SMOOTH); // выбираете режим затенения ( flat или smooth )

glMatrixMode(GL_PROJECTION);// устанавливаем текушей матрицей матрицу проекта
glLoadIdentity(); // обнуляем эту самую матрицу


// настраиваем перспективу ( вот она, функция из glu32 )
gluPerspective(45.0f, (GLfloat)Width / (GLfloat)Height, 0.1f, 100.0f);
glMatrixMode(GL_MODELVIEW); // и переключаемся в модельную матрицу
}

GLvoid Resize(GLsizei Width, GLsizei Height)
{
if(Height==0)
Height = 1;
glViewport(0, 0, Width, Height);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

gluPerspective(45.0f, (GLfloat)Width / (GLfloat)Height, 0.1f, 100.0f);

glMatrixMode(GL_MODELVIEW);
}



GLvoid Draw(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // очищаем буферы
glLoadIdentity(); // обнуляем модельную матрицу
}



LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
RECT Screen; // Это структурка в которую мы поместим размеры области экрана
GLuint PixelFormat; // формат пикселя

static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),// размер структуры
1, // версия ?
PFD_DRAW_TO_WINDOW| // format must support Window
PFD_SUPPORT_OPENGL| // format must support OpenGL
PFD_DOUBLEBUFFER, // must support double buffer
PFD_TYPE_RGBA, // требуется RGBA формат
16, // 16Bit color depth
0, 0, 0, 0, 0, 0, // Color bits ignored ?
0, // No Alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accumulation buffer bits ignored
16, // 16bit z-buffer (depth buffer)
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main drawing layer
0, // reserved
0, 0, 0 // layer mask ignored
};

// Начинаем обрабатывать сообщения
switch(msg)
{
case WM_CREATE: // на этапе создания приложения мы должны настроить 
// формат пикселей и инициализироваит библиотеку
hDC = GetDC(hWnd); // получаем контекст windows

// Следующие несколько строк настраивают формат пикселей
PixelFormat = ChoosePixelFormat(hDC, &pfd);

if(!PixelFormat){
MessageBox(0, "Can't find suitable PixelFormat",
"Error", MB_OK|MB_ICONERROR);
PostQuitMessage(0);
break;
}

if(!SetPixelFormat(hDC, PixelFormat, &pfd)) {
MessageBox(0, "Can't set The PixelFormat",
"Error", MB_OK|MB_ICONERROR);
PostQuitMessage(0);
break;
}
hRC = wglCreateContext(hDC); // создаем контекст рендеринга
if(!hRC) {
MessageBox(0, "Can't Create Render Device Context",
"Error",MB_OK|MB_ICONERROR);
PostQuitMessage(0);
break;
}
if(!wglMakeCurrent(hDC, hRC)) { // устанавливаем его текущим
MessageBox(0, "Can't set current Render Device Context",
"Error",MB_OK|MB_ICONERROR);
PostQuitMessage(0);
break;
}

GetClientRect(hWnd, &Screen); // получаем клиентскую область
Initial(Screen.right, Screen.bottom);// инициализация OpenGL
break;
case WM_CLOSE:
case WM_DESTROY: // по CLOSE и/или DESTROY
ChangeDisplaySettings(NULL, 0); // восстанавливаем установки

wglMakeCurrent(hDC, NULL); // устанавливаем обычный device context
wglDeleteContext(hRC); // удаляем контекст рендеринга
ReleaseDC(hWnd, hDC); // освобождаем device context

PostQuitMessage(0);
break;
case WM_SIZE: // ну это для resize ( хотя как сделать resize
// для fuulscreen application я не знаю ;) )
Resize(LOWORD(lParam), HIWORD(lParam));
break;
default:
return( DefWindowProc(hWnd, msg, wParam, lParam));
}
return(0);


int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShowCmd)
{
MSG msg;
WNDCLASS wc;
HWND hWnd;

wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "Lirik";

if(!RegisterClass(&wc)) 
{
MessageBox(0,"Error Create window class","Error", MB_OK|MB_ICONERROR);
return FALSE;
}

hWnd = CreateWindow("Skeleton",
"Skeleton",
WS_POPUP |
WS_CLIPCHILDREN |
WS_CLIPSIBLINGS,
0, 
0, 
800, 
600, 
NULL, 
NULL, 
hInst, 
NULL);

if(!hWnd){
MessageBox(0,"Error Create window","Error",MB_OK|MB_ICONERROR);
return FALSE;
}

DEVMODE dmScreenSettings;

memset(&dmScreenSettings, 0, sizeof(DEVMODE));
dmScreenSettings.dmSize = sizeof(DEVMODE);
dmScreenSettings.dmPelsWidth = 800;
dmScreenSettings.dmPelsHeight = 600;
dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);

ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
SetFocus(hWnd);

while(1)
{
while(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
return TRUE;
}
}

Draw();
SwapBuffers(hDC);

if(keys[VK_ESCAPE]) SendMessage(hWnd, WM_CLOSE, 0, 0);
}
}


}


ОС Winodows XP SP2
Microsoft Visual Studio 6.0
PM MAIL ICQ Skype   Вверх
Fazil6
Дата 12.11.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 3
Всего: 60



Код

return( DefWindowProc(hWnd, msg, wParam, lParam));
}
return(0);


int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShowCmd)
{

скобки нехватает
PM MAIL   Вверх
JackYF
Дата 12.11.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Rusman, у тебя код без отступов или это так скопировалось?
Если первое, то код без отступов практически нечитаем.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.