Re[5]: C vs. C++
От: ДимДимыч Украина http://klug.org.ua
Дата: 11.09.12 16:13
Оценка:
Здравствуйте, igna, Вы писали:

ДД>>В большинстве случаев — возвращаемое значение и errno.

I>Свое значение errno можно определить?

Технически можно, но не нужно. Зачем?
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[6]: C vs. C++
От: igna Россия  
Дата: 11.09.12 16:17
Оценка:
Здравствуйте, night beast, Вы писали:

NB>1. array_type * get_lines_as_strings ( istream&, error_info * error = 0 );


Что там такое после error похожее на значение аргумента по умолчанию?
Re[6]: C vs. C++
От: igna Россия  
Дата: 11.09.12 16:19
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Технически можно


Как?
Re[7]: C vs. C++
От: night beast СССР  
Дата: 11.09.12 16:20
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>
NB>>1. array_type * get_lines_as_strings ( istream&, error_info * error = 0 );
I>


I>Что там такое после error похожее на значение аргумента по умолчанию?


он и есть
делается на макросах, но это не принципиально.
Re[5]: C vs. C++
От: night beast СССР  
Дата: 11.09.12 16:28
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>Но у меня есть еще один вопрос, как сообщать об ошибке, если файл не прочитался или память не разместилась? Менять сигнатуру функции? Просто вернуть нулевой указатель недостаточно, если нужно различать между двумя причинами ошибки.


по поводу ошибок почитай еще:
part 1
part 2
part 3
Re[2]: C vs. C++
От: azzx Россия  
Дата: 11.09.12 16:36
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>Встречный вопрос, это для разжигания флейма, или действительно интересно? Ведь задавать тут такой вопрос, это как в бочку с бензином спичку кинуть.


Если бочка полная — спичка тупа погаснет, скорее всего.

Темка старовата для флейма. Сейчас, наверное, более актуально "плюсы не нужны" или "плюсы супротив питона".

А по теме топика — раньше писал немного. Сейчас вообще плюсы не нужны, а если надо будет что-то написать к тому же питону (или какой-то мелкий конвертор данных сам по себе, например) — плюсы не нужны совершенно для таких задач. А других у меня для него нет.
Re[7]: C vs. C++
От: ДимДимыч Украина http://klug.org.ua
Дата: 11.09.12 16:38
Оценка:
Здравствуйте, igna, Вы писали:

ДД>>Технически можно


I>Как?


Ну как. errno — это int, можно любое значение в пределах int присваивать.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[9]: errno
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 11.09.12 17:17
Оценка:
Здравствуйте, igna, Вы писали:

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


M>>В стандарте POSIX больше значений. Среди них ENOMEM, ENOENT, ... Обычно эти значения уже вернут функции libc.


I>А под Windows что делать? Гарантий, что все работает так же нет никаких. В errno.h есть следующее "Conforms to the XENIX standard.", но это же старье.


Тут еще проще, Microsoft последний стандарт Cи не поддерживает из принципа. Так что если брать вижуал, то там мои исходники в принципе не скомпилируются, проблема еще до POSIX.
Re[8]: C vs. C++
От: Piko  
Дата: 11.09.12 18:14
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>>>Покажи чистый. Буду знать как надо писать правильно.

P>>ну мне он тоже кажется грязным — но это чисто субъективно, дело привычки, и не относится к языку.
P>>я бы предпочёл:
AS>Может ещё про расстановку скобочек поспорим.

я же говорю — субъективно

AS>Когда я чужой код читаю, мне вот совершенно пофигу как стоят скобочки, как пишутся имена ...


ну конечно, зачастую чужого кода переваривать нужно на порядки больше чем своего, но всё же свой стиль периваривается легче
например вот такой стиль:
if(condition)
    {
    stmt1;
    stmt2;
    ...
    }

мне с непривычки крышу немного сносит, да

AS>Тут на самом деле важно другое, код то вообще-то хоть кто нить прочитал?! Я вообще-то ребёнка в садик собирал и потому особенно не проверял что пишу, то что в Array_Push, исходя из здравого смысла, аргумента не хватает так похоже никто и не заметил ))))


ну да косяк, хотя семантику я не проверял, да и отмазка у меня тоже есть...
Re[3]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:01
Оценка: +1
Здравствуйте, SilentNoise, Вы писали:

MZ>>С так ужо убого выглядит, что просто морально нельзя его терпеть.

SN>Вы это так говорите, будто С++ выглядит менее убого.

Ты не поверишь!
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[5]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:01
Оценка: 3 (1) +1
Здравствуйте, SilentNoise, Вы писали:

SN>Не будет, ибо те средства абстракции, которые есть в С++ но отсутствуют в С, сделаны так монструозно, что приносят больше проблем чем профита.


Автоматический вызов деструктора сделан пц как монструозно.
Ну а шаблонный враппер над указателем это просто нереальный монстр, да!
Жги ещё!
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[9]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:01
Оценка: 3 (1) +1
Здравствуйте, SilentNoise, Вы писали:

SN>Виноват, совсем запутался Да, надо 3 звездочки.

SN>Но идею, думаю, Вы поняли.

Идея тут на самом деле простая: надо брать С++ и не морочить себе голову этими звёздочками и тем, как с ними потом работать.
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[6]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:01
Оценка:
Здравствуйте, Alexey Sudachen, Вы писали:

AS>а простота использования ставит C++ в какое-то непонятное положение.


Тут уже перетирали эту "простоту использования". Рукопашку на plain C несколько упрощает, но до С++ ему ещё ползти и ползти.
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[8]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:01
Оценка: 4 (2) +2
Здравствуйте, Alexey Sudachen, Вы писали:

AS>в С++ мне приходится писать кучу обёрток или использовать их.

А тут тебе мало того что пришлось написать свой FW так ещё и приходится его использовать. Тока в С++ scoped ptr пишется в любой момент с нуля десятком строк, а твой FW с нуля мало того что задолбёшься писать так ещё и отладить это всё сильно геморнее.

AS> Причём явно и понимая как оно может взбрыкнуть и с какими последствиями.

А твоё что, взбрыкнуть не может нигде? По мне так как раз твой FW надо очень осторожно применять, потому как хз что там у тебя за мины разложены.

AS> С учётом трейтсов и всяких других неявных стратегий

А не надо быть укушенным александреску. На С++ можно писать просто.

AS>Так называемое макродрочерство присутствует только в коде yoyo, в целевом коде его нет. Хотя фиг его знает что ты под этим понимаешь.

Вызовы трёхэтажных макросов в прикладном коде.

AS>Фактически преимущество в том, что мне нужно меньше думать на тему как, и больше о том что именно и зачем я делаю.

AS> Но в общем-то вопрос привычки.
Ты привык колбасить на своём FW, потому и думать тебе о нём не надо — ты знаешь как оно работает.
Мы пишем на С++ и уже давно на уровне подсознания знаем как оно работает.
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[10]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:01
Оценка: 3 (1) +1
Здравствуйте, Alexey Sudachen, Вы писали:

AS>Как? Особенно если компилятор про C++11 не слышал.

И что? На стандарте 2003го года вполне можно писать вменяемый код.

AS>Я когда ПРАВИЛЬНЫЙ код на C++ вижу, у меня от этих бла::бла::бла< бла::бла<бла::бла> > в глазах рябит.

А с чего ты взял что то, что ты видел это был правильный код?
... << RSDN@Home >>
Да, йа зелёный тролль!
Re: C vs. C++
От: Vain Россия google.ru
Дата: 11.09.12 19:17
Оценка: 2 (1) :)
Здравствуйте, igna, Вы писали:

I>Есть тут кто-нибудь, кто предпочитает C вместо C++ хотя бы и для отдельных проектов?

А я вот где-то годик под чистыми сями писал. Сначало думал что буду плеваться, но был приятно удивлён обратной стороной сей. Можно сказать что за это время буквально часть мозга высвободилась из языкового оверхеда с++ под прикладные задачи. Ни шаблонов тебе, ни перегрузок, ни вложенных классов/скопов, ни виртуальных функций, ни исключений, ни горбатых стримов, ничего, красота..
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: C vs. C++
От: Трололоша  
Дата: 11.09.12 19:51
Оценка: :)
Здравствуйте, Vain, Вы писали:

I>>Есть тут кто-нибудь, кто предпочитает C вместо C++ хотя бы и для отдельных проектов?

V>А я вот где-то годик под чистыми сями писал. Сначало думал что буду плеваться, но был приятно удивлён обратной стороной сей. Можно сказать что за это время буквально часть мозга высвободилась из языкового оверхеда с++ под прикладные задачи. Ни шаблонов тебе, ни перегрузок, ни вложенных классов/скопов, ни виртуальных функций, ни исключений, ни горбатых стримов, ничего, красота..

Напомнило: Проклятое сало
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[4]: C vs. C++
От: uncommon Ниоткуда  
Дата: 12.09.12 02:34
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>Короче, https://github.com/alexeysudachen/libyoyo — там всё написано.


Что, это кроме тебя кто-нибудь использует? Буду очень удивлен. В коде нет комментариев. Не просто очень мало, а вообще нет. Нуль полный. Что этот код делает? Кроме создателя никто не знает. И не дай бог узнает! Коммиты тоже не блещут выразительностью. "updated", "updated", "updated", опять "updated". Что трудно для себя хотя бы написать, что ты там изменил?
Re[4]: C vs. C++
От: MTD https://github.com/mtrempoltsev
Дата: 12.09.12 04:48
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>Дык, а как это обычно делается в С++?


Если не брать обработку ошибок, которой у тебя кстати тоже нет, то примерно так:

typedef std::vector<std::string> string_list;

void read_lines(std::istream& from, string_list& to)
{
    std::string buf;
    while (std::getline(from, buf))
        to.push_back(buf);
}
Re[6]: C vs. C++
От: MTD https://github.com/mtrempoltsev
Дата: 12.09.12 04:57
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>простота использования ставит C++ в какое-то непонятное положение


Заметно. И это мы еще до обработки ошибок не дошли (ее тут нет), когда окажется, что твой код сыпется как карточный домик.

typedef std::vector<std::string> string_list;

void read_lines(std::istream& from, string_list& to)
{
    std::string buf;
    while (std::getline(from, buf))
        to.push_back(buf);
}


YO_ARRAY *Oj_Get_Lines(void *file) {
  YO_ARRAY *arr = Array_Pchars();
  char *S;
  while ((  S = Oj_Read_Line(file) )) Array_Push(__Retain(S));
  return arr;
}
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.