Показать все 123 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- нубовопросы по c++ (https://hlfx.ru/forum/showthread.php?threadid=5083)
нубовопросы по c++
Неожиданно, возник вопрос про конструкторы по умолчанию. Например, есть структура
1 | struct foo{ |
2 | foo(){} |
3 | foo(int...){} |
4 | }; |
5 | int main () { |
6 | foo x; |
7 | foo y(); |
8 | foo z(1); |
9 | cout<<typeid(x).name()<<endl; |
10 | cout<<typeid(y).name()<<endl; |
11 | cout<<typeid(z).name()<<endl; |
12 | return 0; |
__________________
http://www.moddb.com/mods/monorail-quest
Тип foo() - это функция, возвращающая foo и не принимающая никаких аргументов. Ты же сам её объявил, смотри:
foo x; // создание экземпляра класса foo с вызовом конструктора по умолчанию |
foo y(); // объявление функции y, которая возвращает foo |
foo z(1); // создание экземпляра класса foo с вызовом конструктора foo(int) |
__________________
>это функция
действительно. что-то сразу не распарсил.
__________________
http://www.moddb.com/mods/monorail-quest
foo y(); // объявление функции y, которая возвращает foo |
А в новых стандартах C++ вот так
std::vector< std::pair< vec_t, int >> foo; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
В смысле STL-контейнер в STL-контейнере? Я юзал и мысли не было, что так нельзя. Студия 2015 хавала.
std::map<HCP*, std::set<HCP*>> slu; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>foo y(); // объявление функции y, которая возвращает foo
А не, всё равно не распарсил, это же nested-функция получается а они в стандарте запрещены.
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Объявить дадут, а определить нет.
Да, объявлять функции внутри функций вполне можно.
Вот тебе конкретный пример, где это необходимо:
1 | class Bar |
2 | { |
3 | public: |
4 | Bar() = default; |
5 | void Foo(); |
6 | }; |
7 |
8 | void Bar::Foo() |
9 | { |
10 | Bar foo(); // <---- это не создание объекта класса Bar, но эта строка нужна! |
11 | foo(); |
12 | std::cout << "Bar"; |
13 | } |
14 |
15 | Bar foo() |
16 | { |
17 | std::cout << "Foo"; |
18 | return Bar(); |
19 | } |
20 |
21 | int main(int argc, char *argv[]) |
22 | { |
23 | Bar bar; |
24 | bar.Foo(); |
25 | } |
std::vector<std::vector<std::vector<std::pair<int,int>>>> v; |
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Ошибка была только в компиляторе MSVC, она давно исправлена, да.
__________________
XaeroX ну что же. Для шестой студии статьи Борескова всё еще актуальны
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Шестая студия - это легенда, о которой рассказывают седые старики. Ну примерно как о том, как видели живого нациста.
__________________
XaeroX как у МаркТвена было написано в каком-то из рассказов, юзая шестую студию, я внезапно начал ощущать дружеские чувства к мумии фараона и желание поболтать с ним на злободневные темы.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XaeroX
Т.е. функцию вроде-как определили в локальном неймспэйсе класса, а она вылезла в глобальный? Вот этот момент какой-то странный, хоть и компилируется. Это точно не UB?
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Функция определена в глобальном неймспейсе.
Кажется, ты путаешь объявление и определение.
__________________
XaeroX
Такой вызов — единственная осмысленная вещь, которую можно сделать с этой объявленной функцией?
Кстати, в гецеце же вроде можно включить расширение, которое даёт вложенные функции.
__________________
XaeroX
Так объявление в неймспэйсе класса, а определение в глобальном, вот это мне странно. Так ведь можно и в другом классе такую же функцию объявить и будет путанница или нет?
__________________
http://www.moddb.com/mods/monorail-quest
XaeroX даже если лябмд нет, можно объявлять, например, структуру со статическими методами прямо в теле. Но из двух кошмаров и лямбд, всё же лучше выбирать лямбды.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А вот ещё вопрос про наследование возник внезапно.
Например, у меня есть базовый шаблонный класс
1 | template <typename t, size_t n> |
2 | struct base{ |
3 | t* data; |
4 | size_t* shape; |
5 | base<t, dim>(t* data, size_t* shape): |
6 | data(data), shape(shape){} |
7 | ... |
8 | }; |
1 | template <typename t, size_t n> |
2 | struct derived: base<t, n>{ |
3 | size_t _shape[n]; |
4 | derived<t, dim>(){ |
5 | this->data = nullptr; //кстати, почему здесь нужно обращаться к this? |
6 | this->shape = _shape; |
7 | }; |
8 | ... |
9 | }; |
__________________
http://www.moddb.com/mods/monorail-quest
ComradeAndrew
Хмм, а как тогда лучше перестроить иерархию классов?
Конкретно, у меня такой вариант морды, для доступа к многомерному массиву:
code:
template <typename t, size_t dim> struct carray_base{ t* data; size_t* offset; size_t* shape; carray_base<t, dim>(t* data, size_t* shape, size_t* offset): data(data), shape(shape), offset(offset) {} inline size_t size(void)const{ return shape[0]*offset[0]; } template <typename num, size_t d = dim, typename enable_if<(d > 1), size_t>::type = 0> inline carray_base<t, dim-1> operator [] (num i){ return carray_base<t, dim-1>(data + (size_t)i*offset[0], shape+1, offset+1); } template <typename num, size_t d = dim, typename enable_if<(d == 1), size_t>::type = 0> inline t& operator [] (num i) { return data[(size_t)i]; } };
__________________
http://www.moddb.com/mods/monorail-quest
Ага, разобрался. Сделал так:
code:
template <typename t, size_t dim, bool proxy> struct carray_base{ static_assert(dim>0, ""); typedef typename conditional<proxy, size_t*, size_t[dim]>::type id; t* data; id offset; id shape; ... }; template <typename t, size_t dim> struct carray: carray_base<t, dim, false>{ ... };
__________________
http://www.moddb.com/mods/monorail-quest
Как вы эти шаблоны делаете, я их боюсь до ужаса.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Ну шаблоны - скорее исключение, чем правило. Их обычно не рекомендуют использовать там, где можно без них обойтись (то есть в 99% случаев). Для меня на работе протащить шаблон в master - это всегда праздник.
__________________
Ага, а в 17м стандарте можно наконец-то сделать по человечески:
code:
typedef typename conditional <(dim>1), carray_base<t, dim-1, true>, t&>::type out; template <typename num> //c++17 inline out operator [] (const num& i){ if constexpr (dim>1){ return out(data + (size_t)i*offset[0], shape+1, offset+1); } else { return data[(size_t)i]; } }
__________________
http://www.moddb.com/mods/monorail-quest
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Извиняюсь ещё раз за поднятие темы, но есть ли разница между приведением типов
и (вызовом конструктора?)code:
(int)(x)
?code:
int(x)
__________________
http://www.moddb.com/mods/monorail-quest
thambs никакой.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот и у меня созрел вопрос по С++. Атомарный тип half в язык добавят когда-нибудь уже наконец.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Вряд ли. Минимальный размер выделяемой памяти - байт. А битовые поля и так есть https://en.cppreference.com/w/cpp/language/bit_field
А насчет "атомарности", мне кажется тут некая путаница возникла. Фундаментальные типы не являются атомарными - https://stackoverflow.com/questions...al-types-atomic
ComradeAndrew ты точно понял мой вопрос?
Добавлено 06-06-2018 в 14:57:
half это вещественное с половинной точностью, два байта занимает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В 17м стандарте появилась спецконструкция constexpr if, значит ли это, что в обычном случае компилятор не оптимизирует оператор if от constexpr выражений?
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Компилятор всё оптимизирует. constexpr if, в отличие от обычного if, может выполняться компилятором.
__________________
XaeroX
Я правильно понимаю, что оптимизация if производится в случае если на входе constexpr переменная, а constexpr if может работать чистой функцией от constexpr переменных?
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Да, правильно. Это всё нужно по большому счёту для шаблонного программирования.
__________________
XaeroX т.е. при компиляции конструкции
иcode:
template<int a> void foo(){ if constexpr (a>1) do_stuff(); };
эквивалентны и условный переход исчезнет для любого инстанса?code:
template<int a> void bar(){ constexpr bool tmp = a>1; if (tmp) do_stuff(); };
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Насколько я знаю, if constexpr ведёт себя идентично if в обычных функциях.
Разница возникает в constexpr-функциях. Такие функции не скомпилируются с обычным if, потому что он гарантирует, что лишь одна из веток будет выполняться, а вот constexpr-if гарантирует, что лишь одна из веток будет компилироваться.
Ещё раз - это всё нужно в метапрограммировании, когда мы из-за отсутствия if constexpr в С++14 (интересно, многие ли уже на С++17 перешли?) городим этажерки с std::enable_if.
__________________
А чо, если я в шестёрке напишу if( 1 ) она это не выкинет?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
мультидефайн в зависимости от параметра
Что-то так и не придумал как это сделать, лучше опишу что я хочу, а потом спрошу, можно-ли и как это сделать.
вообщем, хочется что-то вроде макроса, который в зависимости от параметра делает много дефайнов, и другого, который чистит за ним. Что-то вроде:
макрос def_args(n): делает
code:
#define $a foo<n> #define $b bar<n> ...
Можно-ли, и как?code:
#undef $a #undef $b
__________________
http://www.moddb.com/mods/monorail-quest
Вроде бы нельзя.
__________________
Снова вопрос. Есть например функция от n-аргументов, можно ли её как-то вызвать использовав массив из n-аргументов, не прописывая их вручную? Т.е. хочется что-то вроде рекурсивного шаблона, каждый из которого добавляет ещё один аргумент к частичному применению функции:
code:
foo(...); int xs[n]; apply<xs,n>(foo);
__________________
http://www.moddb.com/mods/monorail-quest
Я не знаю способа так сделать. Если узнаешь - напиши.
Но вообще говоря, если ты хочешь передавать аргументы в функцию как массив, то и надо передавать массив, можно даже compile time (std::array).
Идея вариативных шаблонов в том, чтобы поддерживать произвольное число аргументов у функции, а у тебя число аргументов фиксированное.
__________________
thambs here, I googled that for you https://embeddedartistry.com/blog/2...unctions-c-vs-c
может, там найдутся варианты.
Добавлено 11-03-2019 в 12:20:
https://stackoverflow.com/questions...c-function-in-c
в ответах нашлись вроде.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ стесняюсь спросить, а по каким именно ключевым словам ты гуглил? Вроде бы это вообще не по теме.
__________________
Тебе зайцев не жалко? И постыдился, и спросил
А я, похоже, не понял его вопроса.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Зачем битовые сдвиги оформляют в табличку? Неужели такой подход даёт хоть какой-то выигрыш в производительности? В качестве примера вальвовский bistream buffer.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А вот поясните мне, что-то я совсем запутался с тем как c++ осуществляет неявное преобразование типов.
1 | #include <complex> |
2 | #include <cmath> |
3 | typedef std::complex<float> cfloat; |
4 | int main(int argc, char **argv){ |
5 | int i,n; constexpr cfloat _coeff(0, (-4)*atan2(1,1)); |
6 | cfloat x = exp(_coeff * cfloat(i)/cfloat(n)); //fine |
7 | cfloat y = exp(_coeff * i/cfloat(n)); //fail |
8 | return 0; |
9 | } |
__________________
http://www.moddb.com/mods/monorail-quest
Ну а слеш перегружен для такой пары типов?
Не знаю даже, с чего начать свой нубский вопрос. Столкнулся с порчей памяти, которую никак не могу отдебажить. Проявляется в FLTK-поделке при повторении операций undo-redo, реализованных через перезапись структов их сохранёнными состояниями (сейчас через приведение, но через мемкпю тоже делал, разницы нету). Поправил все невысвобождения, какие смог найти, проверил аллоцируемые размеры. В результате под линуксом уже не валится, но под вендой продолжает. Самое интересное, данные в слепках структов верные, и анду-реду даёт ожидаемые результаты. Но на какой-то по счёту тудымсюдым (причём это число воспроизводимое) память оказывается перепаханной.
Когда у вас, опытные товарищи, начинается чертовщина с порчей памяти, где кроме аллокации-высвобождения вы ищете её причины?
nemyax
У нас кастомные аллокаторы с сентинелями.
Кажется, в CRT дебажный аллокатор тоже умеет проверять на предмет порчи, но я им не пользовался.
Проверь все массивы, нет ли выхода за границу.
Если порча у класс-мембера, проверь, нет ли перезаписи за пределы другого класс-мембера.
Попробуй комментировать memcpy и смотреть, пропадает ли баг.
__________________
__________________
Структы такого рода:
1 | struct umark |
2 | { |
3 | const int *ptr; |
4 | }; |
5 |
6 | struct ulink |
7 | { |
8 | uvert *vert; |
9 | ulink *twin; |
10 | ulink *wrap; |
11 | uedge *edge; |
12 | ubend *bend; |
13 | umark *mark; |
14 | }; |
15 |
16 | struct uvert |
17 | { |
18 | flags options; |
19 | union {float xyz[3]; vec3 coords;}; |
20 | ulink *link; |
21 | uties *ties; |
22 | extra_info *extra; |
23 | int misc; |
24 | }; |
25 |
26 | struct uedge |
27 | { |
28 | flags options; |
29 | ulink *link; |
30 | uties *ties; |
31 | extra_info *extra; |
32 | int misc; |
33 | }; |
34 |
35 | struct uface |
36 | { |
37 | flags options; |
38 | usurf *material; |
39 | ubend *bend; |
40 | uties *ties; |
41 | extra_info *extra; |
42 | int misc; |
43 | }; |
44 |
45 | struct undo_chunk |
46 | { |
47 | int type; |
48 | void *addr; |
49 | char state1[Undo_slot_size]; |
50 | char state2[Undo_slot_size]; |
51 | undo_chunk *smaller; // in terms of memory address |
52 | undo_chunk *greater; // in terms of memory address |
53 | }; |
54 |
55 | struct backup |
56 | { |
57 | int count; |
58 | undo_chunk *root; |
59 | }; |
1 | void history::change_state(undo_buffer *b, void (*fun)(undo_chunk*)) |
2 | { |
3 | backup *bak = b->bak; |
4 | int count = bak->count; |
5 | if (bak->root == NULL) {return;} |
6 | undo_chunk **stack = NULL; |
7 | if (Is_small(count)) |
8 | { |
9 | undo_chunk *s[Small_tree]; |
10 | stack = (undo_chunk**)s; |
11 | } |
12 | else {stack = (undo_chunk**)malloc(sizeof(undo_chunk*) * count);} |
13 | int pos = 0; |
14 | undo_chunk *ch = bak->root; |
15 | undo_chunk *gr, *sm; |
16 | stack[pos] = ch; |
17 | while (pos >= 0) |
18 | { |
19 | ch = stack[pos]; |
20 | gr = ch->greater; |
21 | sm = ch->smaller; |
22 | if (gr != NULL) {stack[pos++] = gr;} |
23 | if (sm != NULL) {stack[pos++] = sm;} |
24 | fun(ch); |
25 | --pos; |
26 | } |
27 | if (!Is_small(count)) {free(stack);} |
28 | } |
Ух... кондовый такой си.
Ты указатели чтоли сохраняешь, а не сами данные? Оно так разве будет работать?
__________________
Вот я и говорю, под линуксом просто работает. Под вендой (компилятор vc9) тоже работает, но начинается наркомания после энного повторения.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Хорошо, скажем иначе: где кроме ошибочных аллокации-освобождения?
Добавлено 21-08-2019 в 22:07:
Систему - ничего. Ты сам там что-то херишь, но скорее всего просто не понимаешь этого. Это самый частый сценарий. Ты думаешь что всё в порядке, а сам что-то портишь. Я за все годы программирования один единственный раз столкнулся, когда мне система в штаны насрала - тот известный случай, когда в libc и msvcrt разная реализация atof. А всё остальное - это уже сам себе.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Во-во, я ж и говорю что ты не о том думаешь. У тебя там что-то с указателями, скорее всего. Память-то на старом месте, а вот на что указатели указывают, это другое дело.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
То, что я где-то написал фигню, не означает, что общая задумка работать не будет в принципе.
Меня плющит, что коллапс созревает постепенно к четвёртому-пятому анду-реду и только при использовании компилятора микрософта.
Компилятор тут точно непричём. Значит где-то посадил UB. Накопительный баг. Надо там хотя бы алертов понтаыкать и посмотреть чо происходит.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Всё-таки нашёл одну течку. Заткнул, и порча снята.
Микрософт опубликовал свой STL под лицензией Apache: https://devblogs.microsoft.com/cppb...cing-msvcs-stl/
Добавлено 24-09-2019 в 01:32:
На ЛОРе профессионалы наорудовали, что там не только STL, но и либстдц++ как таковой. Не знаю, правда ли.
STL это вообще удивительная вещь. Её сделал наш, а гордость почему-то никто не испытывает. Подозрительно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Ну потому что он не совсем наш. Вернее, совсем не наш. Наш - это сам знаешь что, на букву К.
__________________
Вот ещё вопрос возник про vardic templates.
Например, если мне нужна функция переменной арности от однотипных аргументов, то я могу записать
1 | template<typename ...ids> |
2 | void foo (const ids&... args){ |
3 | for(auto& arg: {args...}){ |
4 | /* do stuff with arg*/ |
5 | } |
6 | } |
__________________
http://www.moddb.com/mods/monorail-quest
О! Шаблоны позволяют var args? Хотя в шестёрке небось не сработает.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А может кто ни будь пояснить, почему ptr не изменяется в результате?
1 | /* relink data <- ptr */ |
2 | inline void relink |
3 | (void* ptr){ |
4 | self.data = (t*)ptr; |
5 | ptr = self.data + self.offset[0]; |
6 | printf("relink %p -> %p\n", self.data, ptr); |
7 | } |
void* ptr = nullptr; |
cmp.pparts.relink(ptr); |
cmp.pindex.relink(ptr); |
relink (nil) -> 0x445c0000 |
relink (nil) -> 0x2d00 |
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Потому что ты передаёшь указатель по значению, а не по указателю.
Функция должна иметь сигнатуру
void relink(void **ptr) |
__________________
XaeroX
Посыпаю голову пеплом, я точно идиот — слона не углядел.
Вот так, можно
void*& ptr |
__________________
http://www.moddb.com/mods/monorail-quest
__________________
XaeroX
По-моему лучше, так rvalue туда не пропихнёшь.
__________________
http://www.moddb.com/mods/monorail-quest
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Жесть какая-то, как заранее подмечать такие моменты?
__________________
http://www.moddb.com/mods/monorail-quest
thambs
Прочитал только заголовок, т.к. статья слишком страшно выглядит.
Если это то, о чём я подумал, то в Волатиле это лечится "-fno-strict-aliasing" во всех модулях.
__________________
thambs эти статьи всегда берут какой-то сферический пример.
Пусть на реальном покажут. Я не знаю как этот эффект правильно называется, но он присущ любому семейству компиляторов, что на искуственно выдуманной конструкции может случится фейл, тогда как на реальных сложнешийх примерах всё в порядке. Более того - баг только на этих примерах и проявляется. Вот я компилятор bsp тестировал на таких вот примерах. Ну и что? вылетел на комнатке из пяти брашей. А сипульчер прекрасно собирается. Эти статьи - они в первую очередь нужны тем, кто компиляторы пишет, ну в качестве багрепортов. Нахрена это пользователю.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Кто-нибудь здесь пробовал использовать фреймворк GTK в разработке? Какие есть плюсы/минусы/специфические нюансы?
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
SNMetamorph
Статической линковки нету, придётся тащить мегабайты какой-то мутной шняги.
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
Если задачи скромные, то вот:
https://hlfx.ru/forum/showthread.php?s=&threadid=5048
Статическая линковка, кроссплатформа, OpenGL, всего пара сотен килобайт плюс к размеру программы.
Добавлено 12-02-2020 в 16:36:
И кресты вместо си.
SNMetamorph '
Минусы для пользователя прежде всего.
__________________
http://www.moddb.com/mods/monorail-quest
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
__________________
https://m.habr.com/ru/post/263897/
Что-то это вот тоже не радует.
Добавлено 13-02-2020 в 15:33:
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
__________________
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
Эти библиотеки, они же по сути обвёртка над WinForms, чему там тормозить.
Ну может Qt какой все окна через OpenGL рендерит, там да.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
На венде с депрекацией MFC тоже знаитили трудновато говорить о стандартности контролов. Вон даже в хабростатейке результаты для двух "родных" вендовых тулкитов.
Добавлено 13-02-2020 в 14:45:
Кстати по поводу фиговой производительности FLTK. Так как код автора статьи посмотреть уже нельзя, непонятно, грамотно ли он вообще сделал тот грид. Вот что пишут в справке для Fl_Table:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Захотел проверить какие вообще инструменты для клепания формочек предоставляют обе библиотеки - не нашел бинарников на у gtkmm, ни у FLTK.
Это видимо какая-то болезнь опенсорца, что нет элементарных инструкций по установке и/или ссылок на готовые бинарники.
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
SNMetamorph
Вообще-то всё ясно расписано в ридмишке, что лежит в архиве с сорцами.
А какие ты хотел бинарники у дев-тулкита?
Собрал, в общем, из бинарников. По ходу компиляции никаких проблем не было. Заглянул в папку с программами-примерами и мне стало грустно.
Это ж как VGUI голдсурсовский.
Добавлено 13-02-2020 в 22:53:
https://www.opennet.ru/opennews/art.shtml?num=38195
Похоже, от GTK+ придётся так же отказаться в пользу Qt, по той же самой причине.
Добавлено 13-02-2020 в 22:54:
А вообще странно. GIMP под винду вполне себе симпатично выглядит.
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
Вот, собственно по этой причине и я предпочитаю MXTK, который обвёртка над WinForms.
Но да, редактора там нету, вручную приходится всё подгонять.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
XaeroX я бы сказал - пока мне не понадобилось написать большое приложение с интерфейсом. А так, вайн спровляется.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
В общем поковырялся и пришёл к такому заключению:
FLTK - не удоволетворяет требованиям к внешнему виду и удобству разработки
gtkmm - фиг заюзаешь под виндусом без тонны всяких зависимостей в виде mingw/msys2
Остаётся только Qt и GTK, наверное всё же в пользу первого.
Добавлено 14-02-2020 в 20:42:
Вот пример того, как предлагают прикрутить GTK к виндоусу:
https://wiki.gnome.org/Projects/GTK...ationOfGTKStack
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
Вопрос знатокам qt. Я раньше с гуём дел не имел, а тут ВНЕЗАПНО понадобилось. Вообщем, нужен мне какой-ни будь виджет, в котором можно удобным образом задать диапазон двух чисел, как мышкой, так и точно вручную. Что-то вроде продвинутой версии скроллбара с двумя бегунками. Есть что ни будь такое готовое, или из чего можно такое собрать?
__________________
http://www.moddb.com/mods/monorail-quest
Задам вопрос тут, так как в инете не обнаружил внятного ответа: кто-нибудь знает, как установить visual studio 6 на вин10 или вин7?
На вин7 вроде без проблем ставится, просто на некоторых системах может глючить, скажем, открытие проектов.
Lev скачай заархивированную и уже установленную. Думаю, найдётся. Распкакуй и пользуйся. Есть статья на тему установки VB 6.0 на десятку, может быть чем-то поможет.
Скачал оригинальный образ Visual.C++.6.0 Professional Edition, запустил setup.exe, серийник единицы, поругался немного на недостающие какие-то pdf, установился. Сорцы П2 открывает. Win7 максимальная.
А MSDN обязательно ставить?
Нет
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 16:29. | Показать все 123 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024