Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #30 : 22-12-2007 18:18 » |
|
мне срочно требуется вправка мозгов объясните мне одну вещь, потому что чувствую - что то я не догоняю. В настройках нашёл опцию с/с++ -> language -> enable exception handlers по умолчанию галка поставлена. Попробовал убрать - исключения всё равно работают, например int i=0; try { i=1/i; } catch(...) { //сюда попадаем }
, но при компиляции появилось 1 (одно) предупреждение - e:\...\... .h(124) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify -GX код там такой: class CGridEdit1153 : public CStatic { ... ... public: struct CVBarInfo { int posfrom; int minpos; int maxpos;
CVBarInfo() { ... }
double GetFromPerCent() { double d=0; try { d=((double)posfrom)/((double)(maxpos-minpos)); } catch(...) { d=1.0; } return (d<=1.0?d:1.0); } };
... ... };
как понимать ? Что же эта опция делает ?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #31 : 22-12-2007 18:52 » |
|
вообще, может есть у кого вменяемая дока по настройкам проекта ?
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #32 : 23-12-2007 08:27 » |
|
Какая студия?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #33 : 23-12-2007 09:01 » |
|
Джон, VC++6.0
|
|
|
Записан
|
|
|
|
Anchorite
Гость
|
|
« Ответ #34 : 23-12-2007 11:05 » |
|
Эта предупреждение возникает потому, что ты указал компилятору НЕ ВЫЗЫВАТЬ ДЕСТРУКТОРЫ автоматических объектов созданных внутри блока try {} после возникновения исключения. Маленькая прога демонстрирующая все это. Попереключай опцию и посмотри выводимый результат #include <stdio.h>
class A { public: A(int n) : m_n(n) { printf("Constructor of A(%d)\n", m_n); }
~A() { printf("Destructor of A(%d)\n",m_n); }
private: int m_n; };
int main(int argc, char* argv[]) { A a(1);
try { printf("Inside TRY\n"); A b(2); int i = 0; throw i; }
catch(...) { printf("Inside CATCH\n"); }
return 0; }
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #35 : 23-12-2007 13:19 » |
|
Anchorite, так я ж ничего вроде не создаю в блоке try
а кроме того - почему нет ругани на другие try , их полно в проекте
|
|
|
Записан
|
|
|
|
Anchorite
Гость
|
|
« Ответ #36 : 23-12-2007 17:06 » |
|
Ты создаешь анонимные объекты в стеке при преобразовании типов. Почему на другие блоки не ругается - не знаю. Может ограничивается одним предупреждением. Попробуй этот блок try - catch прикоментить. Может начнет и на другие ругаться.
|
|
« Последнее редактирование: 23-12-2007 17:12 от Anchorite »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #37 : 24-12-2007 15:05 » |
|
Anchorite, нет, я проверял , ругается (замечу - не error , а warning) только на этот try . кстати, нашёл ) в файле *.rc , в описании иконок имщем строчку IDR_MAINFRAME ICON DISCARDABLE "res\\.....ico"
и при помощи дефайнов выбираем нужную икону #if defined def_1 IDR_MAINFRAME ICON DISCARDABLE "res\\.....ico" #elif defined def_2 IDR_MAINFRAME ICON DISCARDABLE "res\\.....ico" #else IDR_MAINFRAME ICON DISCARDABLE "res\\.....ico" #endif
- вот это всё же не работает Если сунуться в редактор ресов, то студия благополучно расставляет всё точки над Ё , то есть ручная правка пропадает нафик и вертается всё взад... А жаль.
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #38 : 24-12-2007 16:07 » |
|
Сам не пробовал, но как идея: может, разные файлы ресурсов с иконками подключать в зависимости от варианта сборки?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #39 : 24-12-2007 16:14 » |
|
Вад, порылся я , не нашёл , как путь к иконке задать в настройке. Там есть только включить/исключить файл. Это я тоже уже использовал - полезная штука
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #40 : 25-12-2007 22:50 » |
|
Лёш, ща времени нет детально во всём разбираться. Посему кратко (может поможет):
1. Обрати внимание на файл *.rc2 - Это файл специально для ресурсов изменяемых ползователем. *.rc для пользователя - табу. Тебе надо всё делать в .rc2 его редактор ресурсов не трогает
2. В этом файле ты можешь определить след.:
IDR_MAINFRAME ICON MY_CURRENT_ICON
3. Добавляешь ещё один .h файл с содержимым:
#ifdef твоё условие #define MY_CURRENT_ICON "res\\myicon2.ico" #endif
#ifdef твоё условие #define MY_CURRENT_ICON "res\\myicon1.ico" #endif
и тд
Короче идея такая
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #41 : 26-12-2007 14:20 » |
|
мысль щас пороемся...
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #42 : 26-12-2007 15:35 » |
|
в общем , если просто указывать в rc2 IDR_MAINFRAME ICON DISCARDABLE "res\\....ico" то всё чЮдесно. Но с дефайнами туда не подсунуться , потому что дефайны видны лишь после #include "stdafx.h" , а сюда его засунуть не удаётся дополнительный h-файл никак положение не спасает. Уфф. Тупик какой то
|
|
|
Записан
|
|
|
|
Scorp__)
Молодой специалист
Offline
Пол:
|
|
« Ответ #43 : 26-12-2007 15:54 » |
|
Хм, я precompiled headers вообще не использую, и stdafx.h никуда не подключаю, но дефайны из Preprocessor Definitions у меня работают везде, может тебе с ними попробовать?
|
|
|
Записан
|
- А Вы сами-то верите в привидения? - Конечно, нет, - ответил лектор и медленно растаял в воздухе.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #44 : 26-12-2007 16:01 » |
|
Scorp__), отключил, никакой реакции что то я не понимаю...
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #45 : 26-12-2007 17:49 » |
|
Просто сделай дополнительный mydef.h. Его же инклудишь в .rc и .rc2 и если тебе флаги ещё где-то нужны то инклудишь его и в stdafx.h. И в нём определяешь дефайны.
Вобще-то это даже не идея, а один из способов используемых для автоматического увеличения версии при каждой компиляции. Вместо ICON используется блок VERSION. И всё замечательно работает.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #46 : 26-12-2007 19:26 » |
|
Джон, не понимаю... Не хотит без stdafx.h дефайны видеть , хоть с дополнительным инклудом, хоть нет , а вставить stdafx.h тоже не позволяет
приведи пример с этим самым VERSION
|
|
|
Записан
|
|
|
|
Scorp__)
Молодой специалист
Offline
Пол:
|
|
« Ответ #47 : 26-12-2007 21:38 » |
|
Алексей1153++, странно, то ли студия у тебя так интересно работает, то ли одно из двух... А ты включил дефайны в настройках проекта-то? Мне просто негде проверить, у меня последние проекты все без ресурсов вообще.
|
|
|
Записан
|
- А Вы сами-то верите в привидения? - Конечно, нет, - ответил лектор и медленно растаял в воздухе.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #48 : 26-12-2007 22:06 » |
|
Лёш, быстро - посмотри в МСДН, я оттуда всё брал. Весь сценарий. Если не найдёшь, потом пороюсь.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #49 : 27-12-2007 03:54 » |
|
Scorp__), конечно включил я дефайны - проекты то компилятся нормально, у меня 3 разных файлика на выходе получается, тут всё норм.
Джон, пойду рыться в мсдн )
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #50 : 27-12-2007 05:54 » |
|
фсё , кажись я победил , теперь точно в мсдн ничего не отыскал , зато: дело было вот в чём: в alt+f7 дефайн для проекта указал я во вкладке c/c++ , в окошке "preprocessor definitions:". Эти дефайны видны везде после #include "stdafx.h". Соответственно, в файле ресурсов они не определены ещё. А , оказывается , на такой случай в настройках есть вкладка Resources и там в окошке "preprocessor definitions:" тоже надо вписать тот глобальный дефайн - это специально для видимости в ресах. в GuardN.rc2 написал (названия из проекта , но суть понятна): ///////////////////////////////////////////////////////////////////////////// // Add manually edited resources here...
//икона проекта по умолчанию #define MY_MAIN_ICON "res\\GuardN.ico"
//переопределение иконы (если в проекте включен файл)
#ifdef def_INSTALL_PROGRAMM #undef MY_MAIN_ICON #define MY_MAIN_ICON "res\\InstallIcon.ico" #endif
#ifdef def_demoVer_300objectsMax_0x07 #undef MY_MAIN_ICON #define MY_MAIN_ICON "res\\GSIcon.ico" #endif
//окончательная главная иконка IDR_MAINFRAME ICON DISCARDABLE MY_MAIN_ICON
/////////////////////////////////////////////////////////////////////////////
только выдаётся бестолковое предупреждение D:\.....\GuardN.rc2(29): Could not find the file MY_MAIN_ICON думаю, это даже полезно - чтобы помнить, где заменял иконку ) можно ещё и без #undef MY_MAIN_ICON обойтись , но тогда немного ругается на переопределение. Ну это - добавлять по вкусу Всем спасиб за помощь
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #51 : 27-12-2007 10:17 » |
|
Лёш, в прицепе проектик, который, в зависимости от выбора компиляции (я сделал только для дебуг), генерит три файла с разными именами и иконками без всяких undef и ошибок.
Про версию с ходу не нашёл. Ключевые слова autoincrement build version etc.
Потом ещё поищу.
|
t1.zip (11.65 Кб - загружено 869 раз.)
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #52 : 27-12-2007 11:07 » |
|
ок, дома поразбираюсь ---- кратко глянул - так я и думал , что дело во вкладке Ressourcendateien То есть с этим я уже вроде понял, как бороться
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #53 : 27-12-2007 11:50 » |
|
Да это ты правильно. Только я не понял, почему у тебя ошибка и андеф надо делать. Поэтому проектик сделал. Так быстрей.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #54 : 27-12-2007 16:05 » |
|
undef надо, потому что у меня определена иконка по умолчанию
//икона проекта по умолчанию #define MY_MAIN_ICON "res\\GuardN.ico"
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #55 : 28-12-2007 00:43 » |
|
Дык это ж проще делается. В самом конце делаешь
#ifndef MY_MAIN_ICON //икона проекта по умолчанию #define MY_MAIN_ICON "res\\GuardN.ico" #endif
ХОтя я противник мешанины. Те все компиляции должны подчинятся одной логике (в данном случае содержать дефайны). А так у тебя будет половина так, половина эдак. Через полгода сам же не разберёшься. Или ещё хуже - забудешь и добавишь новую компиляцию. Твой дефолтный случай и сработает. Получишь ЕХЕ с другой иконкой. А так ошибка сразу напомнит. Но это только моё мнение. Делай как хочешь.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #56 : 28-12-2007 03:44 » |
|
Джон, я незапутаюсь - я как раз делаю так, чтобы потом легко разобраться, если что А остальное - комментарияим пишу
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #57 : 29-12-2007 08:53 » |
|
Не совсем так. Ты же сам написал только выдаётся бестолковое предупреждение D:\.....\GuardN.rc2(29): Could not find the file MY_MAIN_ICON думаю, это даже полезно - чтобы помнить, где заменял иконку ) И это правильно, только ошибка должна появляться, когда она действительно есть. Если ты подготавилваешь компиляции С дефайнами, то они ВСЕ должны быть с дефайнами. НИкаких дефолтов. Это однотипная логика. И когда ты добавишь новую компиляцию - ошибка сразу напомнит тебе про дефайн и ты всё сделаешь правильно - сознательно. А у тебя получается мешанина. Грубо говоря, забыв про эту логику и добавив в проект пару десятков компиляций (например для разных языков) у тебя просто сработает дефолт, потом ещё и ещё, в итоге, когда тебе понадобится, ты уже не будешь знать что где, запаришься искать, те в которых дефайны не определены. Эт я по себе знаю. А коментарии свои ты тоже не видишь сразу. А вот если ты сделаешь как я говорю, то прыгнув по ошибке, ты сразу прочтёшь комент, почему это так и даже с указанием, что именно надо сделать. Эт ты сейчас значешь, что в ресурсах тоже надо указать дефайн. А через год? Два?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #58 : 29-12-2007 12:59 » |
|
Джон, я уверен, что именно этот момент я не забуду Другое дело - когда навороченный алгоритм в более, чем одном файле или на несколько экранов
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #59 : 30-12-2007 10:04 » |
|
Джон, я уверен, что именно этот момент я не забуду Ну-ну...
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|