По сравнению с чем?
По сравнению с С или Java это очень сильно не так, говорю исходя из собственного опыта, особенно вспоминая мой давний опыт windows программирования когда приходилось использовать COM компоненты в MFC приложении.
во-первых, какие-либо тесты будут? или только "экспоненциальный" трёп? а то ведь это место скользкое — push/pop, frame stuff и т.п. может стоит больше по размеру чем инлайн малюсенькой функции.
во-вторых, мы вроде про оптимизацию говорим, и видимо по скорости, не? Ну а если нужна оптимизация по размеру — то и она получится лучше и безопасней на C++
Здравствуйте, igna, Вы писали:
I>Есть тут кто-нибудь, кто предпочитает C вместо C++ хотя бы и для отдельных проектов?
Писать на C не люблю*, но считаю необходимым уметь его читать. Потому что это lingua franca, общий знаменатель для взаимодействия всего со всем.
* Постоянно скатываюсь в плюсизмы — то переменную объявлю по месту использования, то void в аргументах функции забуду.
I>Использую libxml2, это библиотека на C, и решил из интереса попробовать и свой модуль, непосредственно использующий libxml2, написать на C.
Здравствуйте, Piko, Вы писали:
P>во-первых, какие-либо тесты будут?
Если тебе не очевидно, что при использовании шаблонов для эмуляции полиморфизма они будут развернуты с дублированием кода, то тут нечего добавить.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, denisko, Вы писали:
I>Спасибо, а как сообщать об ошибке, если файл не прочитался или память не разместилась?
Поскольку я считаю, что ошибки априори достаточно редки то пишу так
I>Но у меня есть еще один вопрос, как сообщать об ошибке, если файл не прочитался или память не разместилась? Менять сигнатуру функции? Просто вернуть нулевой указатель недостаточно, если нужно различать между двумя причинами ошибки.
Здравствуйте, SilentNoise, Вы писали:
SN>Если тебе не очевидно, что при использовании шаблонов для эмуляции полиморфизма они будут развернуты с дублированием кода, то тут нечего добавить.
Ты таки офигительно прав! Именно так. ))) Изначально это было что-то типа шутки. Первая версия эксперимента, кстати, вообще называлась junk. Но как-то так оказалось что в этой шутке, доля шутки уж больно микроскопическая, а простота использования ставит C++ в какое-то непонятное положение. От оно как бывает.
Здравствуйте, igna, Вы писали:
I>Но у меня есть еще один вопрос, как сообщать об ошибке, если файл не прочитался или память не разместилась? Менять сигнатуру функции? Просто вернуть нулевой указатель недостаточно, если нужно различать между двумя причинами ошибки.
Здравствуйте, SilentNoise, Вы писали:
P>во-первых, какие-либо тесты будут? или только "экспоненциальный" трёп? а то ведь это место скользкое — push/pop, frame stuff и т.п. может стоит больше по размеру чем инлайн малюсенькой функции. P>во-вторых, мы вроде про оптимизацию говорим, и видимо по скорости, не? Ну а если нужна оптимизация по размеру — то и она получится лучше и безопасней на C++ SN>Если тебе не очевидно, что при использовании шаблонов для эмуляции полиморфизма они будут развернуты с дублированием кода, то тут нечего добавить.
если тебе не очевидно, что дублирование может оптимизироваться до суммарных размеров меньших чем с void*, а то и вообще до нулевых, то я
например, напиши void* аналог:
template<typename T>
inline const T& max(const T &a, const T &b)
{
return (a<b) ? b : a;
}
Здравствуйте, Alexéy Sudachén, Вы писали:
AS>>>Короче, https://github.com/alexeysudachen/libyoyo — там всё написано. DR>>Йоу, массив. Ой, возьми строчки. Ой, прочитал строку. Библиотека, йо, йо — вотс ап, дог?
AS>Ты таки офигительно прав! Именно так. ))) Изначально это было что-то типа шутки. Первая версия эксперимента, кстати, вообще называлась junk. Но как-то так оказалось что в этой шутке, доля шутки уж больно микроскопическая, а простота использования ставит C++ в какое-то непонятное положение. От оно как бывает.
А в чем именно _преимущества_ перед плюсами на обычных платформах, где размер кода роли не играет? Тебе по-любому придется часть вещей делать через макродрочество, которое заменяется на шаблоны с небольшим/большим распуханием по коду но делающими ровно тоже самое. Пользоваться своими менеджерами памяти объектов и ты в плюсах можешь.
Здравствуйте, igna, Вы писали:
SN>>Если тебе не очевидно, что при использовании шаблонов для эмуляции полиморфизма они будут развернуты с дублированием кода, то тут нечего добавить. I>Вроде бы этого можно избежать, нет?: I> void* f(void*);