Чистый С под Solaris в избранное  новое горячее всё    подписка   модер. 
От: Аноним 184 
Дата: 28.05.08 17:14
Не получается простой printf. В огезге файле после компиляции лежит несметное число кракозябин, в чем причина?


void main()
{
   printf("Hello world\n");
     return;
}
Re: Чистый С под Solaris в избранное  новое    модер. 
От: Centaur 
Дата: 28.05.08 17:31
Здравствуйте, Аноним, Вы писали:

А>Не получается простой printf. В огезге файле после компиляции лежит несметное число кракозябин, в чем причина?


А>void main()
А>{
А>   printf("Hello world\n");
А>     return;
А>}

Ну, как минимум: функция printf должна быть объявлена (#include <stdio.h>); функция main должна возвращать int; в return, соответственно, должен быть код завершения (return 0).
Re[2]: Чистый С под Solaris в избранное  новое    модер. 
От: Аноним 184 
Дата: 28.05.08 19:49
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>Не получается простой printf. В огезге файле после компиляции лежит несметное число кракозябин, в чем причина?


C>
А>>void main()
А>>{
А>>   printf("Hello world\n");
А>>     return;
А>>}
C>

C>Ну, как минимум: функция printf должна быть объявлена (#include <stdio.h>); функция main должна возвращать int; в return, соответственно, должен быть код завершения (return 0).

printf объявлена. А main зачем что-то возвращать? Разве void он не на всех континентах void?
Re[3]: Чистый С под Solaris в избранное  новое    модер. 
От: Daevaornhttp://webnewage.org
Дата: 28.05.08 20:11
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Centaur, Вы писали:


C>>Здравствуйте, Аноним, Вы писали:


А>>>Не получается простой printf. В огезге файле после компиляции лежит несметное число кракозябин, в чем причина?


C>>
А>>>void main()
А>>>{
А>>>   printf("Hello world\n");
А>>>     return;
А>>>}
C>>

C>>Ну, как минимум: функция printf должна быть объявлена (#include <stdio.h>); функция main должна возвращать int; в return, соответственно, должен быть код завершения (return 0).

А>printf объявлена. А main зачем что-то возвращать? Разве void он не на всех континентах void?


За тем, что main `должен` возвращать int.
Re[4]: Чистый С под Solaris в избранное  новое    модер. 
От: Аноним 184 
Дата: 28.05.08 20:15
Здравствуйте, Daevaorn, Вы писали:

D>За тем, что main `должен` возвращать int.


Ясно. Спасибо!
Re[4]: Чистый С под Solaris в избранное  новое    модер. 
От: Erop 
Дата: 28.05.08 22:46
Здравствуйте, Daevaorn, Вы писали:

D>За тем, что main `должен` возвращать int.

А разве он в С кому-то что-то должен?

IMHO описанный эффект в любом случае с жтим не связан...
Кстати, в C вроде бы и функции объявлять не обязательно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Чистый С под Solaris в избранное  новое    модер. 
От: ДимДимычhttp://klug.org.ua
Дата: 29.05.08 07:42
Здравствуйте, Аноним, Вы писали:

А>Не получается простой printf. В огезге файле после компиляции лежит несметное число кракозябин, в чем причина?


В каком файле, в исходном или в выходном?
И как компилировали?
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re: Чистый С под Solaris в избранное  новое    модер. 
От: Аноним 936 
Дата: 29.05.08 14:34
Здравствуйте, Аноним, Вы писали:

А>Не получается простой printf. В output файле после компиляции лежит несметное число кракозябин, в чем причина?



А>
А>#include <stdio.h>
А>int main()
А>{
А>   printf("Hello world\n");
А>     return 0;
А>}
А>



Прошу огромного пардона. Все вижу. Был мой досадный недогляд.

Теперь дело хуже то же самое простейшее не компилируется gcc. И говорит мне "/tmp/ccsdmM2b.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status"

В cpp int возвращать надо, в отличие от простого C, как было заме4ено выше.


Спасибо.
Re: Чистый С под Solaris в избранное  новое    модер. 
От: Аноним 936 
Дата: 29.05.08 14:48
Здравствуйте, Аноним, Вы писали:

А>Не получается простой printf. В огезге файле после компиляции лежит несметное число кракозябин, в чем причина?



А>
А>void main()
А>{
А>   printf("Hello world\n");
А>     return;
А>}
А>



g++ работает.
Re[2]: Чистый С под Solaris в избранное  новое    модер. 
От: Sergey 
Дата: 29.05.08 16:04
Аноним 936 пишет:

> В cpp int возвращать надо, в отличие от простого C, как было заме4ено выше.


Это не совсем правильно было замечено. В C++ требуется, чтобы функция
main имела тип возвращаемого значения int. А вот возвращать что-либо из
нее — не обязательно. В этом случае будет считаться, что из нее вернули
0: "If control reaches the end of main without encountering a return
statement, the effect is that of executing return 0;"
Posted via RSDN NNTP Server 2.1 beta
На улицах злая гопота, в офисах злые гомосеки.
Как выжить в этом городе простому человеку?
Re[2]: Чистый С под Solaris в избранное  новое    модер. 
От: Uzumaki Naruto 
Дата: 29.05.08 16:27
Переименуй файл с xxx.cpp в xxx.c
или поставь флаг -x<language> у GCC (по умолчанию GCC компилирует файлы с расширением *.cpp C++ компилятором, а не С): gcc -xc xxx.cpp

Re[2]: Чистый С под Solaris в избранное  новое    модер. 
От: Uzumaki Naruto 
Дата: 29.05.08 16:30
Это ты скомилировал C++ компилятором, а не С, ответ как скопмилировать C компитяором смотри здесь
Автор: Uzumaki Naruto
Дата: 29.05.08