LINUX.ORG.RU

Что не так в этой строке.


0

0

Сам не прграммирую. Нужна одна программка которая не хочет компилиться
gcc 4.4.0.

Пишет

sysinfo.cpp:276: ошибка: некорректное преобразование из ‘const char*’ в ‘char*


В той строке следующее

char *b = strstr( buff, key );



Весь фрагмент кода

{
char *b = strstr( buff, key );
if ( !b )
return 0;
unsigned long int val = 0;
if ( sscanf( b + strlen( key ), ": %lu", &val ) != 1 )
return 0;
//kDebug(1242) << "scan_one " << key << " " << val;
return val;
}

Re: Что не так в этой строке.

Убери const из объявления buff. Если за этим потянется ещё куча геморроя, то просто замени buff на const_cast<char *>(buff) и отправь мысленный привет автору.

const86 ★★★★★ ()

Re: Что не так в этой строке.

Код то на С++, тогда g++ нужен.

urxvt ★★★★★ ()
Ответ на: Re: Что не так в этой строке. от hizel

Re: Что не так в этой строке.

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

kemm ()
Ответ на: Re: Что не так в этой строке. от owlmind

Re: Что не так в этой строке.

Теперь откатывай обратно и меняй так, как посоветовал hizel. И больше такую ересь про const_cast<> не слушай.

kemm ()
Ответ на: Re: Что не так в этой строке. от zh

Re: Что не так в этой строке.

>const char *b = strstr( buff, key );

Зря вы накинулись на человека. Этот вариант не работает. Появляются другие ошибки. А с первым вариантом программа скомпилилась и работает, проблем не наблюдается.

owlmind ()
Ответ на: Re: Что не так в этой строке. от zh

Re: Что не так в этой строке.

Ну костыль не костыль, большего я и не ожидал собственно.
Работает не глючит и ладно. Красивость решения, не глядя на весь код целиком да еще на скорую руку не требовалась.

owlmind ()
Ответ на: Re: Что не так в этой строке. от owlmind

Re: Что не так в этой строке.

Это не решение. Оно не работает. То, что ты этого не видишь _сейчас_ -- ни о чём не говорит.

Если от данного кода нужно что-то большее, чем "собрать-запустить-удалить", то надо делать по-человечески, а не городить грязные хаки на ровном месте.

kemm ()
Ответ на: Re: Что не так в этой строке. от kemm

Re: Что не так в этой строке.

>Если от данного кода нужно что-то большее, чем "собрать-запустить-удалить", то надо делать по-человечески, а не городить грязные хаки на ровном месте.

Свн тут. http://svn.opensuse.org/svn/kio_sysinfo/trunk
Желающие могут поправить корректно. Я и другие пользующиеся этой программой скажем будем благодарны.

owlmind ()
Ответ на: Re: Что не так в этой строке. от const86

Re: Что не так в этой строке.

const_cast - это такая вещь, которую, ИМХО, кроме как при работе с кривонаписанными библиотеками (то есть, всеми вообще внешними библиотеками) использовать категорически не надо.

Miguel ★★★★★ ()
Ответ на: Re: Что не так в этой строке. от owlmind

Re: Что не так в этой строке.

Index: src/sysinfo.cpp
===================================================================
--- src/sysinfo.cpp     (revision 110)
+++ src/sysinfo.cpp     (working copy)
@@ -273,7 +273,7 @@

 static unsigned long int scan_one( const char* buff, const char *key )
 {
-    char *b = strstr( buff, key );
+    const char *b = strstr( buff, key );
     if ( !b )
         return 0;
     unsigned long int val = 0;

#@$!@@#$@$!!! Тяжело было попробовать, что тебе советовали? Нахрена я 4.4 gcc собирал (и не спал спокойно в это время), если правка только одна, и ровно та самая, про которую тебе говорили?!

Убиццо веником. Вот и помогай после этого людям.

kemm ()
Ответ на: Re: Что не так в этой строке. от kemm

Re: Что не так в этой строке.

> #@$!@@#$@$!!! Тяжело было попробовать, что тебе советовали? Нахрена я 4.4 gcc собирал (и не спал спокойно в это время), если правка только одна, и ровно та самая, про которую тебе говорили?!

> Убиццо веником. Вот и помогай после этого людям.

Cделай для себя выводы... перейди на пакетный дистр, чтобы компилятор не собирать :-)

www_linux_org_ru ★★★★★ ()
Ответ на: Re: Что не так в этой строке. от www_linux_org_ru

Re: Что не так в этой строке.

> Cделай для себя выводы... перейди на пакетный дистр, чтобы компилятор не собирать :-)

Тогда бы я его сразу нафиг послал, потому что 4.4 в пакетах бы не оказалось? 8))

Нафиг-нафиг, полгода с убунтой мучался после переполза с фри, к чертям такие приключения. Половина проблем -- от apt. Генту -- наше фсьо! Заодно приятный оттенок глазам придаёт. 8))

kemm ()
Ответ на: Re: Что не так в этой строке. от hizel

Re: Что не так в этой строке.

> а не будет идеологически вернее:
> -char *b = strstr( buff, key ); 
> +const char *b = strstr( buff, key ); 
Верно, я перепутал sscanf с sprintf'ом.

const86 ★★★★★ ()
Ответ на: Re: Что не так в этой строке. от kemm

Re: Что не так в этой строке.

> Не, я сейчас точно кого-нибудь убью.

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

const86 ★★★★★ ()
Ответ на: Re: Что не так в этой строке. от kemm

Re: Что не так в этой строке.

> Тогда бы я его сразу нафиг послал, потому что 4.4 в пакетах бы не оказалось? 8))

Ну знаете ли... такое может только в страшном сне быть... или в убунте.

> Нафиг-нафиг, полгода с убунтой мучался после переполза с фри, к чертям такие приключения. Половина проблем -- от apt. Генту -- наше фсьо! Заодно приятный оттенок глазам придаёт

Убунта для блондинок. После фри и генты *противопоказана*. Реальные это шапка, дебиан, может сюзя. Я юзаю дебиан.

www_linux_org_ru ★★★★★ ()
Ответ на: Re: Что не так в этой строке. от www_linux_org_ru

Re: Что не так в этой строке.

На всякий случай уточню, что стабильный дебиан (ленни) тебе видимо тоже противопоказан. Бери squeeze или sid.

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