Member
Статус: Не в сети Регистрация: 10.03.2004 Откуда: Минск
Я вот пытаюсь постепенно перейти на Visual C++ после Builder. В связи с этим возник вопросик:
Допустим есть файл file.h
Код:
#ifndef file_H #define file_H
#include <vector>
namespace MyName { using namespace std; vector<int> vect(5); }
#endif file_H
Так вот, в Visual С++ выдается при компиляции ошибка:
class std::vector<...> already defined in MyProg.obj
Почему это так? Больше вектор нигде не определялся. В C++ Builder этот код компилируется и работает.
Member
Статус: Не в сети Регистрация: 10.03.2004 Откуда: Минск
Проблему решил. Я подключал этот файл в модуле MyProgVIEW.h перед объявлением класса вида (это MFC приложение). При объявлении в модуле MyProgVIEW.cpp все заработало. Тогда ворпос, а почему нельзя подключать модули в этом файле-заголовке? Ведь вроде как наоборот в нем рекомендуется все подключать (в Builder по крайней мере, да Страуструп так советует в своей книге).
Junior
Статус: Не в сети Регистрация: 21.12.2004 Откуда: Киев
force_sk подключать файлы заголовочники необходимо всегда в ЦПП файле. Только если в классе необходимо объявить переменную член класса, тогдатолько можно АШ файл подключать в АШ файле.
Member
Статус: Не в сети Регистрация: 13.11.2004 Откуда: Новосибирск
Как в Visual С++ пишу консольное приложение, но окно консоли привыполнении программы мне на экране не нужно. В Delphi, я помню, надо убирать строку {$APPTYPE CONSOLE}, а тут ничего такого нет. Как сделать, чтобы оно не появлялось?
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
qasz МММ. А вы совсем правильно понимаете что хотите получить? Вообще консолькное приложение - это приложение, у которого по дефолту определины 3 файловых дискриптора: stdin, stdout, stderr. К чему будет это привязано, а тем более будет ли это привязано к консольному окну компиялтор определить не может (очевидно почему). Поэтому ни какими изменения атрибутов этого не добится.
Если тебе надо, чтоб програма работала и не выдавала ни каких окон (в том числе и не собственных) - то тогда тебе надо писать обычно Windows приложение. тАм будет стандартный main или как его мелкомятые изуродовали - от него и пиши.
На последок могу предложить извращенный рецепт для консольного приложения: найти окно, которое является консолью и сделать его невидимым... Что полчится - не знаю... Да и вообще в это имхо тебе пока лезти рановато
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
nickyoz Есть оболочка к minGW - Dev C++ . Там действительно такая галочка есть : не создавать окно консоли (вроде примерно так). А компилер прикольный. Я раньше тут поднимал вопросы по консольным приложениям, с этим компилятором меньше всего проблем было: теперь почти со всем разобрался в консоли, кроме разве что смены раскладки.
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
nickyoz
Цитата:
А какие проблемы могу тбыть с компилятором?
Я вот чють раньше спрашивал гдето-то здесь про портирование из дос в вин. консоль и во общем разобрался с интерфейсом (вводом и выводом), но неожиданно появились проблемы с работой программы: дебуг-версия работала более менее, а вот релизная глючила (например поиск по БД давал разные результаты от билда к билду). Это всё происходило в VC++ (пробовал в 6 и в 7). Я понимаю конечно что это скорее всего от кривого кода, но он компилился под дос вполне сносно. И я попробовал minGW - небольшие косметические поправки и полностью стабильная работа - он тоже прохавал мой код . Вот такая история.
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
mein Для меня критерий правильности кода отсутвие единого варнинга при работе gcc --predicate
И вообще код надо писать так, чтоб он был переносим. А если возникают проблемы такого рода под стабилные версии компиляторов - то сокрее всего баги с памятью...
Я просто думаю что этот minGW не делает оптимизации и выделяет памяти с большим запасом, что не эфективно, но часто избовляет от многих проблем с кривыми ручками програмистов... Но если даже на одном компиляторе код дает разные результаты, то тут можно подумать только о ручках... уж извените за грубость
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
nickyoz То что баги с памятью это я знаю . Вот только 200к исходников не охота переделывать, вот и пошёл наикратчайшим путём. А памяти приложение (консольное) выделяет не так и много - по показаниям таскмэнеджера в пике выделения 1100К, это при том что я выделяю не меньше 600К только под данные (а там ещё само приложение, окно и ещё фиг знает чего). Правда есть небольшая утечка , но не критичная.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
nickyoz писал(а):
И вообще код надо писать так, чтоб он был переносим.
А на кой??? Все беды от переносимости кода между платформами! Так как очень часто, а точнее в 50% случаев приходится отказываться от возможностей определенных системы не доступных в других. Из зда чего на свет рождаюбтся убоги как по работе так и по дизайну межплатформенные программы. Вот меня лично абсолютно не волнует получится ли скомпилировать мой код не на VC++ и тем более не на Windows. Так к чему такие жестокости то?
Devona писал(а):
Помогите,еще даже не чайнику...Есть ченить типа туториалов по VC++ 6? Microsoft Visual Studio .NET 2003
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения