| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Простой пример - непонятная ошибка |
| Автор: PRIZRAK001 28.10.2007, 00:13 | ||||||
| Здравствуйте. Visual Studio 2005. Пытаюсь скомпилировать код:
В результате получаю сообщения об ошибках:
с указанием на строку:
Не пойму, в чём дело. Подскажите, пожалуйста! |
| Автор: marcusmae 28.10.2007, 00:59 | ||
Добрый день, PRIZRAK001,
|
| Автор: JackYF 28.10.2007, 01:16 | ||
| Вообще говоря, странное поведение Решилось так:
|
| Автор: archimed7592 28.10.2007, 07:52 | ||||||
Вообще говоря странного мало
Что объявит эта строка? Hint: ф-ции можно объявлять где-угодно. Аналогично и здесь:
|
| Автор: JackYF 28.10.2007, 11:54 |
тьху ты... второй раз напарываюсь... |
| Автор: PRIZRAK001 28.10.2007, 12:11 | ||||
| archimed7592, ты прав. Компилятор действительно думает, что это функция. Вот так работает:
Но и так тоже:
Что ещё больше сбивает с толку! |
| Автор: marcusmae 28.10.2007, 13:22 |
| Хм, вот оно что. А я правильно понял, что отличие в том, что Ваша переменная будет заводиться в стеке, а моя - в куче? |
| Автор: archimed7592 28.10.2007, 17:27 |
Почему? marcusmae, да. |
| Автор: JackYF 29.10.2007, 00:18 | ||
эти два вызовы аналогичны. new вызывает malloc. |
| Автор: PRIZRAK001 29.10.2007, 00:22 | ||
archimed7592, разве это нормально, писать столько скобок?!
|
| Автор: JackYF 29.10.2007, 00:59 |
ну, это еще терпимо. И намного больше скобок бывает. Вот почему такие хитрые операторы лучше логически разбивать. И длина строк поменьше, и компилятору легче оптимизировать... |
| Автор: PRIZRAK001 1.11.2007, 23:07 |
| ОК. Всем спасибо за ответы. |
| Автор: archimed7592 2.11.2007, 00:17 |
Чё, правда что ль? Хто сказал? Добавлено через 2 минуты и 18 секунд Ммм, а что тебя смущает? Ну не пиши скобки, не пиши пробелы, вообще можешь не писать ничего. Если же ты хочешь получить какой-то результат, то придётся смириться с тем, что язык С++ так устроен. Можешь обратиться в комитет и, если ты их убедишь, то сделают новые правила языка. |
| Автор: JackYF 2.11.2007, 00:32 |
шутишь... я минуты 3 пытался понять, что ты этим хотел сказать. Хорошо. new, как правило (в большинстве реализаций) вызывает malloc. Доволен? |
| Автор: archimed7592 2.11.2007, 00:42 |