Суббота, 16 Ноября 2024, 19:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
GavolotДата: Среда, 18 Апреля 2012, 17:02 | Сообщение # 281
Последователь Тени
Сейчас нет на сайте
Тритон, блин чувак ты мне все больше не нравишься. Ты везде пытаешься сказать, что ты самый умный) Причем кое-где без доказательств.
Я думал что тут что-то интересное появилось, но не вольно за тобой понаблюдал, уже в какую тему ты влез)) batman


В общем что-то делаю, но пока не пойму ни как :)
Тень - выражение основной сущности человека.
ТритонДата: Воскресенье, 22 Апреля 2012, 09:20 | Сообщение # 282
постоянный участник
Сейчас нет на сайте
Quote (Нохчи)
Судя по ответам помощь больше не нужна.
Наоборот, глюк надо разжевать подробно. Я ведь тот ключ линкера не писал и даже не знаю, где он валяется. И как мне догадаться, что он уже воткнулся, когда и почему? Вроде ведь идеология предполагает только тот код, который нужен с абсолютным минимумом накладного и вдруг совсем другое поведение. Почему? Нужна так же инфа, где взять эти самые библиотеки.


Не всё так плохо, как оно есть на самом деле.
НохчиДата: Воскресенье, 22 Апреля 2012, 09:40 | Сообщение # 283
заслуженный участник
Сейчас нет на сайте
Какую IDE юзаешь?

Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Воскресенье, 22 Апреля 2012, 12:30 | Сообщение # 284
постоянный участник
Сейчас нет на сайте
Quote (Нохчи)
Какую IDE юзаешь?
wxDev c++. Винда - лицензионная семёрка x64.


Не всё так плохо, как оно есть на самом деле.
НохчиДата: Воскресенье, 22 Апреля 2012, 12:47 | Сообщение # 285
заслуженный участник
Сейчас нет на сайте
Quote
wxDev c++

Она специально заточена под wxWidgets. Я так понял тебе эта либа вообще не нужна. Поставь обычную DevC++.


Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Воскресенье, 22 Апреля 2012, 13:06 | Сообщение # 286
постоянный участник
Сейчас нет на сайте
Я не знаю, какая либа мне нужна. У меня весь опыт в студии с билдером вперемешку, в остальных осях я новичок. Я хочу сделать подоконник на бесплатной среде. Как её для этого правильно поставить и настроить? Консольного интерфейса не будет. А будет не только гуй, так ещё и 3D.

Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Воскресенье, 22 Апреля 2012, 13:10
НохчиДата: Воскресенье, 22 Апреля 2012, 13:15 | Сообщение # 287
заслуженный участник
Сейчас нет на сайте
1)Поставь DevC++(а еще лучше Visual C++)
2)Почитай книжку по WinAPI
3)После того, как осилишь первые 2 пункта читай книжку по DirectX/OpenGL или прикручивай готовый движок.


Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Воскресенье, 22 Апреля 2012, 13:53 | Сообщение # 288
постоянный участник
Сейчас нет на сайте
Quote (Нохчи)
После того, как осилишь первые 2 пункта
Я прочитал Петзолдта всего. Не осилил только "хеллоу виндоус найнти фаив".

Добавлено (22.04.2012, 13:52)
---------------------------------------------

Quote (Нохчи)
а еще лучше Visual C++
Давай конкретнее.

Добавлено (22.04.2012, 13:53)
---------------------------------------------

Quote (Нохчи)
Поставь DevC++
А где взять?


Не всё так плохо, как оно есть на самом деле.
НохчиДата: Воскресенье, 22 Апреля 2012, 13:56 | Сообщение # 289
заслуженный участник
Сейчас нет на сайте
Quote
Давай конкретнее.

Любую, у меня Visual C++ 2008, доволен как слон.

Quote
А где взять?

http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe


Многие вопросы по Windows отпадут, если посмотреть тут
goldsphereДата: Воскресенье, 22 Апреля 2012, 13:56 | Сообщение # 290
заслуженный участник
Сейчас нет на сайте
Тритон, Лучше возьми Visual C++
VC++ 2010
----------------------
Поправил ссыль


FinderX - Android Аркада

Сообщение отредактировал goldsphere - Воскресенье, 22 Апреля 2012, 13:58
ТритонДата: Воскресенье, 22 Апреля 2012, 17:25 | Сообщение # 291
постоянный участник
Сейчас нет на сайте
Экспресу заранее не доверяю в плане простоты интерфеса по опыту того, что мелкомягкие считают быстрым и упрощённым. В нормальной то студии смог разобраться ровно с двумя шаблонами проектов: пустое оконное приложение и пустая dll. Всё остальное сложнее байткода спектрумовского бейсика, редактора диска, яызка ассемблера и даже опкодов.

Добавлено (22.04.2012, 16:31)
---------------------------------------------

Quote
Compiler: Default compiler
Building Makefile: "C:\Projects\cpp\dev\SeaJackals\Makefile.win"
Executing make...
make.exe -f "C:\Projects\cpp\dev\SeaJackals\Makefile.win" all
g++.exe -c SeaJackals.cpp -o SeaJackals.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
from SeaJackals.cpp:3:
C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
SeaJackals.cpp:5: error: `ofstream' does not name a type

make.exe: *** [SeaJackals.o] Error 1

Execution terminated
Почему ему не нравится ofstream?
Code
//=================================================================================================
#include <windows.h>
#include <iostream.h>
//=================================================================================================
ofstream      Log;
//=================================================================================================
bool          InitApplication (                      );
//=================================================================================================
int  WINAPI   WinMain         (HINSTANCE  Instance   ,
                    HINSTANCE  Previus    ,
                    LPSTR      CommandLine,
                    int        Show       )
{
  if (InitApplication())
  {
  }
  return 0;
}
//=================================================================================================
bool          InitApplication (                      )
{
  static char ApplicationName[16]="Sea jackals";
  WNDCLASSEX WindowClass;
  return true;
}
//=================================================================================================

Добавлено (22.04.2012, 17:25)
---------------------------------------------
Через std не помогает:

Code
//=================================================================================================
#include <windows.h>
#include <iostream.h>
//=================================================================================================
std::ofstream Log;
//=================================================================================================
bool          InitApplication (                      );
//=================================================================================================
int  WINAPI   WinMain         (HINSTANCE  Instance   ,
                    HINSTANCE  Previus    ,
                    LPSTR      CommandLine,
                    int        Show       )
{
  if (InitApplication())
  {
  }
  return 0;
}
//=================================================================================================
bool          InitApplication (                      )
{
  static char ApplicationName[16]="Sea jackals";
  WNDCLASSEX WindowClass;
  return true;
}
//=================================================================================================
,
Quote
Compiler: Default compiler
Building Makefile: "C:\Projects\cpp\dev\SeaJackals\Makefile.win"
Executing make...
make.exe -f "C:\Projects\cpp\dev\SeaJackals\Makefile.win" all
g++.exe -c SeaJackals.cpp -o SeaJackals.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
from SeaJackals.cpp:3:
C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
SeaJackals.cpp:5: error: aggregate `std::ofstream Log' has incomplete type and cannot be defined

SeaJackals.cpp:5: error: storage size of `Log' isn't known

make.exe: *** [SeaJackals.o] Error 1

Execution terminated
.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Воскресенье, 22 Апреля 2012, 15:26
НохчиДата: Воскресенье, 22 Апреля 2012, 17:36 | Сообщение # 292
заслуженный участник
Сейчас нет на сайте
Тритон, во-первых не iostream.h, а просто iostream, во-вторых надо подключить еще и fstream

Многие вопросы по Windows отпадут, если посмотреть тут
ТритонДата: Понедельник, 23 Апреля 2012, 07:59 | Сообщение # 293
постоянный участник
Сейчас нет на сайте
Quote (Нохчи)
надо подключить еще и fstream
А это отдельная голова? Без iostream работать будет?

Добавлено (23.04.2012, 07:59)
---------------------------------------------

Code
//=================================================================================================
#include <windows.h>
#include <fstream.h>
#include <iostream.h>
//=================================================================================================
std::ofstream    Log;
//=================================================================================================
bool             InitApplication           (                      );
//=================================================================================================
LRESULT CALLBACK WindowProcedureMainWindow (HWND       Window     ,
                    UINT       Message    ,
                    WPARAM     Frist      ,
                    LPARAM     Second     );
//=================================================================================================
int  WINAPI      WinMain                   (HINSTANCE  Instance   ,
                    HINSTANCE  Previus    ,
                    LPSTR      CommandLine,
                    int        Show       )
{
  if (InitApplication())
  {
  }
  Log.close();
  return 0;
}
//=================================================================================================
bool             InitApplication           (                      )
{
  static char ApplicationName[16]="Sea jackals";
  WNDCLASSEX WindowClass;
  Log.open("Log.Log");
  Log<<"ApplicationName=\""<<ApplicationName<<"\"."<<endl;
  WindowClass.cbSize     =sizeof(WindowClass);
  WindowClass.style      =CS_HREDRAW|
                          CS_VREDRAW;
  WindowClass.lpfnWndProc=WindowProcedureMainWindow;
  Log<<"WindowClass.cbSize     ="<<WindowClass.cbSize<<"."<<endl;
  Log<<"WindowClass.style      ="<<WindowClass.style<<"."<<endl;
  Log<<"WindowClass.lpfnWndProc="<<WindowClass.lpfnWndProc<<"."<<endl;
  return true;
}
//=================================================================================================
LRESULT CALLBACK WindowProcedureMainWindow (HWND       Window     ,
                    UINT       Message    ,
                    WPARAM     Frist      ,
                    LPARAM     Second     )
{
  switch (Message)
  {
   case WM_DESTROY: PostQuitMessage(0);
   break;
  }
  return DefWindowProc (Window, Message, First, Second);
}
//=================================================================================================
,
Quote
Compiler: Default compiler
Building Makefile: "C:\Projects\cpp\dev\SeaJackals\Makefile.win"
Executing make...
make.exe -f "C:\Projects\cpp\dev\SeaJackals\Makefile.win" all
g++.exe -c SeaJackals.cpp -o SeaJackals.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

make.exe: *** [SeaJackals.o] Error 1

Execution terminated
, если заменить
Code
return DefWindowProc (Window, Message, First, Second);
на
Code
return 0;
, то всё эйси. В чём дело? Что ему не нравится? Ведь с таким ретоном прога не сможет юзать стандартную обработку мессаг.


Не всё так плохо, как оно есть на самом деле.
ArchidoДата: Понедельник, 23 Апреля 2012, 11:34 | Сообщение # 294
Сэнсэй
Сейчас нет на сайте
LRESULT CALLBACK WindowProcedureMainWindow (HWND Window, UINT Message, WPARAM Frist, LPARAM Second)

...

return DefWindowProc (Window, Message, First, Second);

facepalm.jpg


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ТритонДата: Понедельник, 23 Апреля 2012, 11:41 | Сообщение # 295
постоянный участник
Сейчас нет на сайте
А здесь:
Code
//=================================================================================================
#include <windows.h>
#include <fstream.h>
#include <iostream.h>
//=================================================================================================
std::ofstream    Log;
//=================================================================================================
bool             InitApplication           (HINSTANCE  Instance   );
//=================================================================================================
LRESULT CALLBACK WindowProcedureMainWindow (HWND       Window     ,
                    UINT       Message    ,
                    WPARAM     First      ,
                    LPARAM     Second     );
//=================================================================================================
int  WINAPI      WinMain                   (HINSTANCE  Instance   ,
                    HINSTANCE  Previus    ,
                    LPSTR      CommandLine,
                    int        Show       )
{
  if (InitApplication(Instance))
  {
  }
  Log.close();
  return 0;
}
//=================================================================================================
bool             InitApplication           (HINSTANCE  Instance   )
{
  static char ApplicationName[16]="Sea jackals";
  WNDCLASSEX WindowClass;
  Log.open("Log.Log");
  Log<<"ApplicationName=\""<<ApplicationName<<"\" at "<<(void *)ApplicationName<<"."<<endl;
  Log<<"WinMain                  ="<<(void *)WinMain<<"."<<endl;  
  Log<<"InitApplication          ="<<(void *)InitApplication<<"."<<endl;
  Log<<"WindowProcedureMainWindow="<<(void *)WindowProcedureMainWindow<<"."<<endl;  
  WindowClass.cbSize       =        sizeof        (WindowClass                 );
  WindowClass.style        =        CS_HREDRAW|
                    CS_VREDRAW;
  WindowClass.lpfnWndProc  =        WindowProcedureMainWindow;
  WindowClass.cbClsExtra   =        0;
  WindowClass.cbWndExtra   =        0;
  WindowClass.hInstance    =        Instance;
  WindowClass.hIcon        =        LoadIcon      (NULL       , IDI_APPLICATION);
  WindowClass.hCursor      =        LoadCursor    (NULL       , IDC_ARROW      );
  WindowClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH                 );
  Log<<"WindowClass.cbSize       ="<<        WindowClass.cbSize       <<"."<<endl;
  Log<<"WindowClass.style        ="<<        WindowClass.style        <<"."<<endl;
  Log<<"WindowClass.lpfnWndProc  ="<<(void *)WindowClass.lpfnWndProc  <<"."<<endl;
  Log<<"WindowClass.cbClsExtra   ="<<        WindowClass.cbClsExtra   <<"."<<endl;
  Log<<"WindowClass.cbWndExtra   ="<<        WindowClass.cbWndExtra   <<"."<<endl;
  Log<<"WindowClass.hInstance    ="<<(void *)WindowClass.hInstance    <<"."<<endl;
  Log<<"WindowClass.hIcon        ="<<(void *)WindowClass.hIcon        <<"."<<endl;
  Log<<"WindowClass.hCursor      ="<<(void *)WindowClass.hCursor      <<"."<<endl;
  Log<<"WindowClass.hbrBackground="<<(void *)WindowClass.hbrBackground<<"."<<endl;
  return true;
}
//=================================================================================================
LRESULT CALLBACK WindowProcedureMainWindow (HWND       Window     ,
                    UINT       Message    ,
                    WPARAM     First      ,
                    LPARAM     Second     )
{
  switch (Message)
  {
   case WM_DESTROY: PostQuitMessage(0);
   break;
  }
  return DefWindowProc (Window, Message, First, Second);
}
//=================================================================================================
                    
что ему не нравится?
Quote
Compiler: Default compiler
Building Makefile: "C:\Projects\cpp\dev\SeaJackals\Makefile.win"
Executing make...
make.exe -f "C:\Projects\cpp\dev\SeaJackals\Makefile.win" all
g++.exe -c SeaJackals.cpp -o SeaJackals.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

g++.exe SeaJackals.o -o "SeaJackals.exe" -L"C:/Dev-Cpp/lib"

make.exe: *** [SeaJackals.exe] Error 1

Execution terminated
, но если заменить
Code
WindowClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH                 );
на
Code
WindowClass.hbrBackground=NULL;
, то всё эйси.


Не всё так плохо, как оно есть на самом деле.
SnuuxДата: Понедельник, 30 Апреля 2012, 15:04 | Сообщение # 296
постоянный участник
Сейчас нет на сайте
В общем есть вопрос: как в функцию передать двумерный массив?
(с меня конечно плюсик в репутацию)

Добавлено (30.04.2012, 15:04)
---------------------------------------------
А, ну ещё в общем на других ресурсах я смотрел, там все это делают через двойной указатель (аля **a). Вот не знаю, может есть способ попроще?

goldsphereДата: Понедельник, 30 Апреля 2012, 15:08 | Сообщение # 297
заслуженный участник
Сейчас нет на сайте
Может быть так?
Code

void f(int *a)
{}
int main()
{
int a[10][10];
return 0;
}

Вот, посмотри.


FinderX - Android Аркада

Сообщение отредактировал goldsphere - Понедельник, 30 Апреля 2012, 15:20
SnuuxДата: Понедельник, 30 Апреля 2012, 15:33 | Сообщение # 298
постоянный участник
Сейчас нет на сайте
goldsphere, ладно, спасибо не натыкался на этот сайт. Буду пробовать. (жаль без указателей нормально нельзя( )
ТритонДата: Понедельник, 30 Апреля 2012, 15:35 | Сообщение # 299
постоянный участник
Сейчас нет на сайте
Quote (goldsphere)
Code
void f(int *a)   
{}   
int main()   
{   
int a[10][10];   
return 0;   
}

Ну уж точно не так. А вот так:
Code
void f(int **a, int n, int m)   
{}   
int main()   
{   
int a[10][10];
   f(a, 10, 10);
return 0;   
}
можно. Если функция предназначена для массивов фиксированного размера, то так:
Code
void f(int **a)   
{}   
int main()   
{   
int a[10][10];
   f(a);
return 0;   
}
, если фиксирован только один размер, то так:
Code
void f(int **a, int n)   
{}   
int main()   
{   
int a[10][10];
   f(a, 10);
return 0;   
}
и так же, если один размер зависит от другого.

Добавлено (30.04.2012, 15:35)
---------------------------------------------
Quote (Snuux)
Вот не знаю, может есть способ попроще?
Сложнее, ты хотел сказать? Проще то уже не куда, так что если по-другом, то уже сложнее. Как и одномерный проще всего простым указателем.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Понедельник, 30 Апреля 2012, 15:36
Lord_ZeonДата: Понедельник, 30 Апреля 2012, 18:11 | Сообщение # 300
частый гость
Сейчас нет на сайте
Тритон,
Сам давно хотел узнать как передавать двумерный массив через аргументы функций, пробовал разные варианты, но почти всегда сталкивался с ошибкой при компиляции: cannot convert 'int (*)[10]' to 'int**' for argument '1' to 'void f(int**, int, int)'

Единственный рабочий вариант у меня передавать массив способом type function name (type array[size][size]) где size известные пределы массива.


Сообщение отредактировал Lord_Zeon - Понедельник, 30 Апреля 2012, 18:11
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг