Кто работал со студией 2003.net подскажите мне.

Тема в разделе "WASM.BEGINNERS", создана пользователем ajak, 3 янв 2011.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    В общем дело такое, диска с моей любимой 2005 не стало. Но был диск с 2003 дот нет которая. Которую я никогда не ставил. Поставил весь с++ и с#. Создаю новый проект, пишу такой код

    Код (Text):
    1. int main()
    2. {
    3.     int m;
    4.    
    5. }
    Или такой
    Код (Text):
    1. int main()
    2. {
    3.     int m;
    4.     return '12345';
    5. или return 3.14
    6. }
    Код компилится и выполняется без ошибок и предупреждений. Почему? Студия что return сама подставляет чтоль, или у меня криво она стала при установке. Система чистая, недавно ставил, студия без ошибок поставилась.
    Кто что может сказать? Может это в настройках?
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    радуйся... в чем проблема твоя?

    поставь точку останова и посмотри в дисассемблере... или поставь в настройках проекта выводить асм-листинг...
     
  3. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Потому что по правилам ретёрн должен быть, а тут его нет и ещё он хавает почему то даже флот числа, хотя функция может возвращать только int
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    По-вашим может и так.
     
  5. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Что значит по моим? У меня borkand си ругается, если я не поставлю возврат, и в 2005 студии все нормально. А тут почему так?
     
  6. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    бугага

    П.с. потому что борланд это борланд, а вц это мс :lol:
     
  7. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    хзчт
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    значит по тем правилам, которые ты придумал...

    )))

    ЗЫ учи язык D!
     
  9. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Фу́нкция — в программировании — это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Значит main у вас не функция, а процедура, всё логично. ^)
     
  11. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Как настроить студию чтобы он ругался на отсутствие return
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Зачем? ^)
     
  13. bug1z

    bug1z New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2008
    Сообщения:
    228
    Код (Text):
    1. int main() {}
    Код (Text):
    1. 00311000  xor         eax,eax
    2. 00311002  ret
    Код (Text):
    1. int main() {
    2.      return 0;
    3. }
    Код (Text):
    1. 00D71000  xor         eax,eax
    2. 00D71002  ret
    Все в порядке.
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ещё бы не было, это прописано стандартом - в main необязательно явно возвращать значение, так как в этом случае неявно возвратится 0. ТС-у нужно идти читать стандарт. И в VS2005 тоже самое.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    Код (Text):
    1. #include <stdio.h>
    2.  
    3. int main(int argc, char **argv)
    4. { printf("no return!? oh my god!!! o_O \n"); }
    MinGW - никаких ошибок, а это фактически означает, что компиляторы из GNU коллекции тоже с этим согласны... но... можно уточнить... g++ попробовал под Ubuntu 10.10 - тоже никаких проблем... вывод - проблема не в компиляторе, проблема - в голове... и еще раз - УЧИ ЯЗЫК D!)))
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Rel
    Повторяю, это стандарт!, ничего пробовать не надо.
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    я знаю... и касается это не только функции main... если нет return, то возвращается 0 (xor eax, eax и затем ret)... вроде бы для всех стандартных типов... а насчет там возврата структур или double / long long что происходит? щас попробовал - вернулась билеберда, судя по всему поля структуры не были заполнены, то есть, что было на стеке - то и осталось... а при double - минус бесконечность (0x8000000000000000)... не знаю, как в MinGW сделать асм-листинг, да и лень чет))) хотя не важно, все равно такой код не пишу никогда...
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    ajak
    Вы товаришь, Си спутали с C++.
    В Си да все как вы писали. А вот в Си++ нет.
     
  19. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    я про си и говорю
     
  20. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    мне ++ не нужны