Вопрос-Ответ (C++)
| |
Kornival | Дата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1 |
The Witcher
Сейчас нет на сайте
| Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.
Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
|
|
| |
Gavolot | Дата: Среда, 18 Апреля 2012, 17:02 | Сообщение # 281 |
Последователь Тени
Сейчас нет на сайте
| Тритон, блин чувак ты мне все больше не нравишься. Ты везде пытаешься сказать, что ты самый умный) Причем кое-где без доказательств. Я думал что тут что-то интересное появилось, но не вольно за тобой понаблюдал, уже в какую тему ты влез))
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |
Тритон | Дата: Воскресенье, 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 |
заслуженный участник
Сейчас нет на сайте
| Она специально заточена под 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 |
заслуженный участник
Сейчас нет на сайте
| Любую, у меня Visual C++ 2008, доволен как слон.
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); на , то всё эйси. В чём дело? Что ему не нравится? Ведь с таким ретоном прога не сможет юзать стандартную обработку мессаг.
Не всё так плохо, как оно есть на самом деле.
|
|
| |
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 |
|
| |
|