Цитата(Yason @ Nov 17 2007, 20:16)

Прошу прощения, что лезу с советами не в свой огород, но чем Вам не нравится передавать указатель на структуру как параметр функции?
Думаю, опыт microsoft в разработке софта оспаривать никто не будет, но они делают именно
так.
Код
BOOL GetMessage(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax
);
lpMsg [out] Pointer to an MSG structure that receives message information from the thread's message queue.
(остальное здесь неважно)
Не надо прость прощения, все нормально.
Ну это как яблоки -- "ну почему вам не нравятся зеленые яблоки?".
Не нравится потому, что придется сейчас переделывать еще и вызовы функций (PutMessage, GetMessage, может еще какие) и далее преретрехать проект.
Ну, нравится - не нравится, а прийдется...
Разница между МС и моим ГетМессэйджем в том, что я не обрабатываю сообщений об окончании работы приложения, и следовательно, мне не нужно возвращать BOOL. У меня их просто как таковых нет. Зачем, собственно? Т.е. это как раз тот момент, чем отличается программы для микроконтроллеров от программ для компов.
Цитата(Сергей Борщ @ Nov 17 2007, 20:27)

Поздравляем! Вы прошли CV до конца

Пора менять компилятор. И лучше это сделать сейчас, пока проект только разрастается, а не "разросся".
Спасибо. Я тоже склоняюсь этой мысли... Давно было пора. А оно вот когда выстрелило. В самый не подходящий момент.
Цитата
Это не то. Это в первом издании K&R был вариант определения функций void func() int a, int b { } или что-то очень похожее вместо void func (int a, int b ) { }.
ах, да! Точно.

Цитата(WHALE @ Nov 17 2007, 21:29)

там-же,где и возвращаемые локальные переменные из фукции-в стеке.т.е не проходит return MSG;
Но имхо,это не не причина отказываться от компилятора.сделайте вашу структуру MSG глобальной
или работайте с ней динамически-создавйте-удаляйте в куче в планировщике и возвращайте через
указатель-чуть проиграите в обьеме свободного озу,выиграете в размере стека.
господин Хайдук вполне внятно обьяснил-озу в авр кот наплакал.и это ваша структура крохотная,
а бывают и байт на 100 и больше-зачем ее всю в стек пихать.
Глобальная структура? Ну, я не знаю... по моему перебор! Я итак огребаю сложности из-за отсутствия ни пространств имен и классов, так ту еще одна глобальная бестия появится. Нет, конечно, это можно сделать. Более того работать оно будет. Но каков будет код! И все это ради сохранеия религии CV?
Динамическое выделение памяти тоже не метод. Сильно проиграю в скорости. Не говоря уже про фрагментацию памяти и прочие возможные проблемы, которые сейчас не видны.
Нет, господа, разговор идет не о том, как мне сохранить проект в CV. При желании я и сам смогу обойти эти грабли. Проблема вынесена в название топика: речь о другом -- о фичах CV, которые не были видны по началу. И я думаю, что я не один такой, кто сначала обрадовался легкости CV и сориентировался на него, как на средство разработки.
Цитата(WHALE @ Nov 17 2007, 21:29)

господин Хайдук вполне внятно обьяснил-озу в авр кот наплакал.и это ваша структура крохотная,
а бывают и байт на 100 и больше-зачем ее всю в стек пихать.
да-да, именно!
Структура крохотная. С опломбом влезет в регистры, которые CV традиционно использует при возврате из функции. Нам ничего не мешает возвращать эту крохотную структуру из функции по значению, а не, наоборот, передавать в функцию указатель на нее (чтоб функция по указатель произвела присвоение нужным элементам структуры). Ничего, кроме самого компилятора. В этом-то и проблема.