Visual Studio C++ 2019 + GTK2 + TextAdept [SOLVED]
Visual Studio C++ 2019 + GTK2 + TextAdept [SOLVED]
ЗАЧЕМ ЭТО НАДО?
прежний заголовок и проблема #3 [SOLVED]:
прежний заголовок и проблема #2 [SOLVED]:
MSVS2019 C/C++ project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix? [SOLVED]
прежний заголовок и проблема #1 [SOLVED]:
GTK2/3/+ in Visual Studio C++ 2019, compile errors [SOLVED]
проверяю пока это, возможно это как-то поможет, но не уверен:
MSVS C++ 2019.
проект вроде успешно создался CMake-ом отсюда:
https://github.com/textmagus/textmagus
Могу если надо сделать минимальный пример, или выслать проект целиком
прежний заголовок и проблема #3 [SOLVED]:
прежний заголовок и проблема #2 [SOLVED]:
MSVS2019 C/C++ project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix? [SOLVED]
прежний заголовок и проблема #1 [SOLVED]:
GTK2/3/+ in Visual Studio C++ 2019, compile errors [SOLVED]
проверяю пока это, возможно это как-то поможет, но не уверен:
MSVS C++ 2019.
проект вроде успешно создался CMake-ом отсюда:
https://github.com/textmagus/textmagus
Могу если надо сделать минимальный пример, или выслать проект целиком
Last edited by citRiks on Sun 28 Feb, 2021 09:48, edited 16 times in total.
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
безуспешно пробовал менять оции проекта "C language standard", "C++ language standard", "Compile as"
на всякий случай "C/C++ all options" проекта (все не влезло)
на всякий случай "C/C++ all options" проекта (все не влезло)
Last edited by citRiks on Thu 18 Feb, 2021 10:19, edited 1 time in total.
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
По стандарту размер массива должен быть константой времени компиляции, о чём и говорит сообщение об ошибке. В GCC есть нестандартное расширение, чтобы указывать в качестве размера массива ранее определённую переменную, что, похоже, и использовано в этом коде. Вероятно, это же расширение поддержано и clang'ом. Т.ч., возможно, если настроите сборку clang'ом (как, не подскажу) и разрешите (не запретите) нестандартные расширения языка, то будет вам щастье. Ну или просто задавайте конкретное число или
constexpr
-выражение (C++). Если же размер может оказаться большим, то смотрите в сторону std::vector
а. Для экспериментов с поведением разных компиляторов рекомендую Compiler Explorer.
Last edited by HaRT on Thu 18 Feb, 2021 13:51, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
HaRT,
nrows который задается в качестве размера, декларируется так на 504-й строчке:
https://github.com/textmagus/textmagus- ... log.c#L504
int ncols = 0, nrows = 0, len = 0;
обычная переменная типа ИНТ
А в "обычном" Visual Studio без "clang"-a этого получается что совсем нельзя ..?
И, вроде там промелькивало где-то требование к GCC.
А можно ли сделать компиляцию в Visual Studio с GCC (=clang?), то тоже не?
а ФАРа компиляция ведь делается же как-то с GCC, кстати.
Значит ли что надо научиться компилировать ФАР с GCC,
и перенести этот опыт на другие частные случаи?
Компиляция в GCC происходит с возможностью дебаггировать потом?
В этом случае мне нужнее дебагирование именно, лишится этогo нельзя
constexpr - это что?
можно ли его приспособить к сценарию с изменямой переменной (nrows) которая размер (высота) диалога,
и как это сделать не переворачивая весь код с ног на голову?
nrows который задается в качестве размера, декларируется так на 504-й строчке:
https://github.com/textmagus/textmagus- ... log.c#L504
int ncols = 0, nrows = 0, len = 0;
обычная переменная типа ИНТ
интересно очень.HaRT wrote: ↑Thu 18 Feb, 2021 13:48 GCC есть нестандартное расширение, чтобы указывать в качестве размера массива ранее определённую переменную, что, похоже, и использовано в этом коде. Вероятно, это же расширение поддержано и clang'ом. Т.ч., возможно, если настроите сборку clang'ом (как, не подскажу)
А в "обычном" Visual Studio без "clang"-a этого получается что совсем нельзя ..?
И, вроде там промелькивало где-то требование к GCC.
А можно ли сделать компиляцию в Visual Studio с GCC (=clang?), то тоже не?
а ФАРа компиляция ведь делается же как-то с GCC, кстати.
Значит ли что надо научиться компилировать ФАР с GCC,
и перенести этот опыт на другие частные случаи?
Компиляция в GCC происходит с возможностью дебаггировать потом?
В этом случае мне нужнее дебагирование именно, лишится этогo нельзя
это число оно переменное, задает там размер диалога в GTK, т.е. изменяемое по определению.
constexpr - это что?
можно ли его приспособить к сценарию с изменямой переменной (nrows) которая размер (высота) диалога,
и как это сделать не переворачивая весь код с ног на голову?
да, выглядит полезным, спасибо
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
Вот оригинальный MakeFile этого проекта
https://github.com/textmagus/textmagus- ... r/Makefile
Каких-то особых флагов я там не разглядел, вроде только это (?):
А CMakeLists.txt не должен был их адаптировать сам?
Ну допустим что-то не сработало с CMake-ом,
то как теперь перенести эти флаги в проект Visual Studio?
(там я могу сам догадываться куда их втыкать,
но лучше подскажите куда, чтобы наверняка правильно воткнулись)
https://github.com/textmagus/textmagus- ... r/Makefile
Каких-то особых флагов я там не разглядел, вроде только это (?):
gtdialog_flags = -std=c99 -pedantic -W -Wall -Wno-unused
А CMakeLists.txt не должен был их адаптировать сам?
Ну допустим что-то не сработало с CMake-ом,
то как теперь перенести эти флаги в проект Visual Studio?
(там я могу сам догадываться куда их втыкать,
но лучше подскажите куда, чтобы наверняка правильно воткнулись)
Last edited by citRiks on Thu 18 Feb, 2021 14:55, edited 1 time in total.
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
Прошу прощения, расширенные консультации по C/C++ не входят в мои планы. Тема это огромная, нюансов неимоверное количество, мне этого и на работе хватает.
Фар есть инструмент, а не нянька. © 2009 DrKnS
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
HaRT, спасибо за помощь
Оказывается это насчет VLA, V(ariable)L(ength)A(Arrays),
которые запрещены в MSVS, и никак это не обойти, но в других компайлерах разрешены.
Эксперементирую с этим, пока вроде успехи есть:
Вместо:
Делаем:
проект теперь скомпилировался по крайней мере, но ..
Оказывается это насчет VLA, V(ariable)L(ength)A(Arrays),
которые запрещены в MSVS, и никак это не обойти, но в других компайлерах разрешены.
Эксперементирую с этим, пока вроде успехи есть:
Вместо:
GtkWidget * entries[nrows]
Делаем:
GtkWidget** entries = malloc(sizeof(GtkWidget*) * nrows);
проект теперь скомпилировался по крайней мере, но ..
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
Что касается iconv - это побеждено, но с остальным реально не знаю что делать
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
Очевидно, матчасть учить надо.
Или вы надеетесь, что кто-то за вас соберёт проект который вам понадобился?
И к фару всё это имеет хоть какое-нибудь отношение?
MSVS2019 C++/C-lang project: GtkWidget *entries_test[nrows]; // "expected constant expression" error. How to fix?
Ну вроде GTK это относительно популярная весчь,
и есть шанс что у кого-то здесь был опыт что с ней делать и подскажет
идея была в том чтобы понять как работает весьма приличный редактор TextAdept,
и или пересадить его полностью в ФАР, или перенять оттуда что полезное.
Или подсмотреть как TextAdept использует/интегрирует Scintillа.
Кроме Scintillа и GTK, все остальное там на Луа, что улучшает шансы для обозначеннытх целей.
TextAdept это вроде как оболочка вокруг Scintillа в основном, не сильно сложная прога по идее.
Надо перенять его интерфейсность к Скинтилле, и модули которые к нему написаны.
Например там есть модуль сравнения:
https://github.com/orbitalquark/textade ... /file_diff
я могу переписать все модули, но это возьмет сильно больше времени,
чем если бы можно было в принципе пересадить это сразу все на почву ФАРа.
Scintillа+TextAdept это лучшая после Вим редакторная система,
и менее сложная/лучше адаптируемая для ФАРа.
Автор TextAdept (Митчелл) настроен к означенным целям дружелюбно,
но в VisualStudio не понимает ровно ничего, для Windows компилирует в MingW.
Но в MingW нет дебаггера для меня, я знаю более-менее VisualStudio лишь.
Если бы удалось победить компиляцию GTK в VisualStudio,
то означенные цели были бы весьма реальны, на благо общества