LINUX.ORG.RU

Ответ на: комментарий от L_user

> не знаю, не знаю, вот gcc 3.4.6 не может собрать FBreader,- куча
> ошибок c std::string, о чем есть соответ. багрепорты
GCC 3.4.x много чего собрать не может, как правило из-за своеобразного крепления ручек к телам авторов поделок. Про FBreader не знаю, поделись ссылкой на багрепорты.


anonymous
()
Ответ на: комментарий от dilmah

> 4.99.10 еще не существует:) 4.99.1 это как раз последний current

dmesg на http://ianzag.megasignal.com/ "Mission impossible"? :)

ps: последний NetBSD-curent - это как минимум .23, думаю, уже выше [завтра проверю как соберется]. а вот 3.99.1 - это как раз самый первый -current :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от dilmah

> обрати внимание на мажорную цифру:)

hm.. ну разве что отметили 4.x бранч [AFAIR уже сделали] :) ладно, завтра посмотрим..

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от anonymous

> не знаю, не знаю, вот gcc 3.4.6 не может собрать FBreader,- куча > ошибок c std::string, о чем есть соответ. багрепорты

Это проблема не gcc, а неумения афффторов писать на С++. Потому как это ламенство не знать того, что std - это namespace, которое надо либо включать полностью посредством using namespace std; либо указанием using std::string;

stellar
()
Ответ на: комментарий от anonymous

>> FreeBSD переходит на GCC

>FreeBSD переходит на GPL? Так держать! :)

Анонимус, wake up, во FreeBSD всю жизнь использовался компилятор gcc.

anonymous
()
Ответ на: комментарий от stellar

> > не знаю, не знаю, вот gcc 3.4.6 не может собрать FBreader,- куча > ошибок c std::string, о чем есть соответ. багрепорты

> Это проблема не gcc, а неумения афффторов писать на С++. Потому как это ламенство не знать того, что std - это namespace, которое надо либо включать полностью посредством using namespace std; либо указанием using std::string;

Во-во, понапишут программ такие вот пейсатели, а потом появляются лозунги "32-ядерный Интель в каждый десктоп".. и ложки серебряные пропадают... Лучше бы на Жабе писали.

Gharik
()
Ответ на: комментарий от anonymous

Не вопрос, Ниагара уже на подходе, да и для Жабы то родная среда.

Gharik
()
Ответ на: комментарий от stellar

это, ты типа свои знания в C++ показал, что ли? если ты не знал, можно писать и так,-

... std::string str; str = "string"; ...

, без использования директивы using

L_user
()
Ответ на: комментарий от stellar

> Это проблема не gcc, а неумения афффторов писать на С++. Потому как это ламенство не знать того, что std - это namespace, которое надо либо включать полностью посредством using namespace std; либо указанием using std::string;

или же, все-таки как белые люди, "std::string s;" а за использование директивы using расстреливать на месте без суда и следствия :-/

// wbr

klalafuda ★☆☆
()

а чего не на icc? непорядок! :))

anonymous
()
Ответ на: комментарий от klalafuda

:-/ А тех еще кто добавляет using в header shared-библиотек надо бить ногами очень сильно, потому как еще другим отравляют жизнь!

akira_ag
()
Ответ на: комментарий от akira_ag

>:-/ А тех еще кто добавляет using в header shared-библиотек надо бить ногами очень сильно, потому как еще другим отравляют жизнь!

Shared-библиотеки, вообще-то, должны использовать не STL-типы, а POD.

То есть, вместо Somefunc(const std::string & s); Somefunc(const char * c);

Потому как иначе, при сборке с другой реализацией STL, все либо не соберется, либо работать не будет.

stellar
()
Ответ на: комментарий от stellar

> Shared-библиотеки, вообще-то, должны использовать не STL-типы, а POD.
То есть, вместо Somefunc(const std::string & s); Somefunc(const char * c); Потому как иначе, при сборке с другой реализацией STL, все либо не соберется, либо работать не будет.

"понял, отстал" (c) FIDO

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от L_user

>это, ты типа свои знания в C++ показал, что ли? если ты не знал, 
можно писать и так,- ... std::string str; str = "string"; ... , без 
использования директивы using


Можно и презерватив на глобус натянуть, ага.

Еще можно писать в таком вот стиле:

std::string key, value;
std::map<std::string, std::string> m;
m.insert(std::pair<std::string, std::string>(key, value));

Вместо того, чтобы в начале логического блока написать
{
   using std::string;
   using std::map;
   using std::pair;
  
   string key, value;
   m.insert(pair<string, string>(key, value));
}

stellar
()
Ответ на: комментарий от klalafuda

>> Это проблема не gcc, а неумения афффторов писать на С++. Потому как это ламенство не знать того, что std - это namespace, которое надо либо включать полностью посредством using namespace std; либо указанием using std::string;

> или же, все-таки как белые люди, "std::string s;" а за использование директивы using расстреливать на месте без суда и следствия :-/

После такихтопиков, начинай считать, что за использование си++ надо расстреливать на месте без суда и следствия...

anonymous
()
Ответ на: комментарий от anonymous

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

Я тогда еже не знаю, что надо делать после топиков про то, как это классно - писать на ЯП, где не надо декларировать переменные перед их использованием....

stellar
()
Ответ на: комментарий от stellar

Чтобы каждый потом изобретал строки или копировал память ? Если есть договоренности, что нужно использовать конкретный STL, то почему бы не использовать ? А char* это для С программистов. Объекты наше все! Хотя откровенно говоря реализация std::string больше похож на процедурное программирование, чем на ООП :)

akira_ag
()
Ответ на: комментарий от stellar

И если еще вспомнить про параметр с char* - я даже боюсь себе представить сколько раз потом на нем вызовут strlen и пробегутся по памяти, вместо использования std::string.size()

akira_ag
()
Ответ на: комментарий от akira_ag

>Чтобы каждый потом изобретал строки или копировал память ? Если есть договоренности, что нужно использовать конкретный STL, то почему бы не использовать ? А char* это для С программистов. Объекты наше все! Хотя откровенно говоря реализация std::string больше похож на процедурное программирование, чем на ООП :)

char * - это для переносимости. Почитайте того же Александреску о проектировании интерфейсов.

Если есть договоренность использовать конкретный STL, то, конечно же, нет смысла пользоваться POD.

stellar
()
Ответ на: комментарий от akira_ag

>И если еще вспомнить про параметр с char* - я даже боюсь себе представить сколько раз потом на нем вызовут strlen и пробегутся по памяти, вместо использования std::string.size()

Ну, во-первых, можно передавать не char *, а (char *, int). А во-вторых, ничто не мешает сразу после передачи библиотечной функции char * сделать из него std::string s(szCharData);

stellar
()
Ответ на: комментарий от stellar

> А во-вторых, ничто не мешает сразу после передачи библиотечной функции
> char * сделать из него std::string s(szCharData);
Мещает, точнее - душит. Жаба :)

anonymous
()
Ответ на: комментарий от akira_ag

>std::string(szCharData) будет равно strcpy() и соотвественно подобие strlen :)

Будет. Но - один раз, только при вызове конструктора.

Внутри библиотеки никакого strlen уже не будет.

stellar
()
Ответ на: комментарий от stellar

лучше пользоваться typedef,-

typedef std::string String; String key, value; std::map<String, String> m; m.insert(std::pair<String, String>(key, value));

Почему лучше,- (выше уже писали) нехорошо писать using в заголовках, а typedef,- пожалуйста

так что asm и C++,- наше все

L_user
()
Ответ на: комментарий от L_user

блин, опять в одну строку получилось
короче вот так нужно:


typedef std::string String;
String key, value;
std::map<String, String> m;
m.insert(std::pair<String, String>(key, value));

L_user
()
Ответ на: комментарий от L_user

Да, можно; причем лучше вынести все эти определения в отдельный файл:

namespace XXXYYY
{
typedef std::string String; 
.....
}

----

#include "STLTypes.hpp"

...
...
...

stellar
()
Ответ на: комментарий от L_user

> так что asm и C++,- наше все

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

Gharik
()
Ответ на: комментарий от Gharik

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

дык не у всех же ... а потом, естественный отбор не повредит ;)

L_user
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.