LINUX.ORG.RU
решено  
UVV

Qt or plain C


0

2

Привет. Нужно написать небольшую консольную утилитку. Утилитка должна использовать библиотеку для обработки некоторых данных, библиотека написана на Qt. На чём лучше написать утилитку, на Qt или на чистом С.


[#]  
note173

Если qt уже есть, то какие вообще вопросы могут быть? От Qt разумно отказываться, когда размер приложения на порядок меньше размера библиотеки.

*** ()
[#]  
alex_custov

Или я не понял вопроса, или как ты напишешь программу на С, которая не использует Qt, и при этом будет использовать бибилотеку на Qt? O_O Или библиотека экспортирует C символы, а ты будешь делать dlopen?

**** ()
[#]  
fat_angel

Если оно и так зависит от либы зависящей от Qt (т.е. кути в любом случае должны быть установлены), то смысл мучится?

***# ()
[#] Ответ на: комментарий от note173 07.02.2012 16:13:26  
x905
>>-----Цитата---->>

От Qt разумно отказываться, когда размер приложения на порядок меньше размера библиотеки.

<<-----Цитата----<<

то, что qt позволит увеличит скорость разработки и качество кода - уже не аргумент ?

** ()
[#] Ответ на: комментарий от zJes 07.02.2012 21:13:05  

А, иксы не нужны...

Тогда нахрена туда дермокути совать?

Если подобной библиотечки нет на сях (т.е. она самописная), сомневаюсь, что будет сложно ее на сях реализовать. Все проще, чем в кутях этих дурацких ковыряться...

**** ()
[#] Ответ на: комментарий от x905 07.02.2012 22:58:38  
note173

Ты не правильно понял мое сообщение. Я привел возможный вариант, когда от использования qt можно отказаться. Аргументы в пользу использования тоже есть.

*** ()
[#] Ответ на: комментарий от Eddy_Em 07.02.2012 21:21:33  
alex_custov

>>Все проще, чем в кутях этих дурацких ковыряться

Напиши-ка мне на Си однострочник наподобие

if(QRegExp("\\$[0-9a-cA-C]{2,6}([0-9]+)").exactMatch(str))
    qDebug("Matches");

Мм? И таких примеров в Qt полно, и иксы можно не использовать, QtCore не зависит от иксов.

**** ()
[#] Ответ на: комментарий от alex_custov 07.02.2012 23:26:25  

> Напиши-ка мне на Си однострочник наподобие

#include <pcreposix.h>

...

int exact_match(const char *pattern, const char *str)
{
    regex_t re;

    if (regcomp(&re, pattern, 0) != 0)
        return -1;

    if (regexec(&re, str, 0, NULL, 0) != 0) {
        regfree(&re);
        return 0;
    }

    regfree(&re);
    return 1;
}

...

    if (exact_match("\\$[0-9a-cA-C]{2,6}([0-9]+)", str) == 1)
        fprintf(stderr, "Matches\n");
** ()
[#] Ответ на: комментарий от alex_custov 08.02.2012 0:36:35  

Просто определил функцию exact_match (не знаю, есть ли уже в pcre подобная), в использовании получается то же самое, что и с методом exactMatch.

** ()
[#] Ответ на: комментарий от quasimoto 08.02.2012 0:41:01  
alex_custov

речь о том, что если очень постараться, то можно все функции Qt определить самому через вторые библиотеки. Только это уже не похоже на "в кутях этих дурацких ковыряться", а скорее наоборот.

**** ()
[#] Ответ на: комментарий от tensai_cirno 08.02.2012 1:52:30  
alex_custov

софт размером больше чем десять строк будет завязан на сторонние библиотеки почти наверняка. А если ты не хочешь писать вторую glib и Qt - то будешь линковаться с ними, не вижу никакх проблем. Это unix way.

**** ()
[#] Ответ на: комментарий от tensai_cirno 08.02.2012 1:52:30  

ЛОЛШТО. Намного чаще из-за какой-то боязни подключить то же Qt/Glib и использовать готовые проверенные мейнстримные решения, начинают либо подключать стоппиццот каких-то мелких библиотек, которые уже через год забрасываются и не поддерживаются в свежих ветках дистрибутивов, либо (что ещё хуже) пишутся свои собственные реализации, которые, конечно же, компактнее, глобальней и надежней и в которых потом тоннами вылавливаются ошибки.

** ()
[#] Ответ на: комментарий от alex_custov 07.02.2012 23:26:25  

Во-первых, регулярками я не пользуюсь. Во-вторых, если бы и пользовался, все там есть (regcomp и т.п. из regex.h). И выполняться оно будет отнюдь не медленнее.

Не надо думать, что С такой тупой язык.

**** ()
[#] Ответ на: комментарий от Eddy_Em 07.02.2012 21:21:33  
mopsene
>>-----Цитата---->>

Тогда нахрена туда дермокути совать?

<<-----Цитата----<<

Не огорчай панду, Qt хороший фреймворк для многого, не только для гуйни.

* ()
[#] Ответ на: комментарий от Eddy_Em 08.02.2012 13:12:48  
alex_custov
>>-----Цитата---->>

Во-вторых, если бы и пользовался, все там есть (regcomp и т.п. из regex.h)

<<-----Цитата----<<

Если мне не изменяет память, то regex - это POSIX, а не сам С, и соответственно, не гарантировано, что он будет на других платформах.

>>-----Цитата---->>

Не надо думать, что С такой тупой язык.

<<-----Цитата----<<

в этом и дело, что это всего лишь язык, который даёт самую базовую функциональность. В больших проектах ты наверняка будешь использовать сторонние библиотеки, если, конечно, не приболел NIH.

**** ()
[#] Ответ на: комментарий от alex_custov 08.02.2012 16:12:33  
>>-----Цитата---->>

regex - это POSIX, а не сам С, и соответственно, не гарантировано, что он будет на других платформах.

<<-----Цитата----<<

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

>>-----Цитата---->>

В больших проектах ты наверняка будешь использовать сторонние библиотеки, если, конечно, не приболел NIH.

<<-----Цитата----<<

Я использую некоторое количество библиотек. Но, к сожалению, много чего просто нет (либо есть, но не так, как надо; либо есть, но платно) - приходится делать самому. Но мне это нравится.

**** ()