• Как обеспечивается совместимость динамических библиотек при ликовке в рантайме?

    @MarkusD Куратор тега C++
    MVV, ты этими словами хочешь сказать что C++ не поддерживает стандарт и функциональность C?
    Написано
  • Как обеспечивается совместимость динамических библиотек при ликовке в рантайме?

    @MarkusD Куратор тега C++
    Сергей Соловьев, тебя беспокоят только имена? А соглашения о вызовах тебя не беспокоят? Тебя не беспокоит то, что собранная из исходного кода на одном языке библиотека может спокойно использоваться в исходном коде на другом языке?

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

    Расскажи подробнее про эту поддержку классов, перегрузок и, особенно, шаблонов. Что именно и как там поддерживается?
    Написано
  • Какие есть доки по сборке APK/AAB с использованием Android NDK?

    Роберт, Gradle используется для сборки только высокого уровня и для упаковки APK.
    Собирать высокий уровень и паковать APK можно в несколько шагов, можно одним шагом. Все зависит от того, какую задачу ты из консоли попросишь выполнить Gradle.
    Для сборки низкого уровня используется только ndk-build или cmake. Возможность использовать кастомный тулчейн сборки тут не стоит рассматривать.
    Maven идет мимо, это нестандарт. Ant идет мимо, это устаревшая и давно списанная технология, на смену которой Gradle и пришел.
    Написано
  • Какие есть доки по сборке APK/AAB с использованием Android NDK?

    GNU-like_RobertOS0, ясно. Могу сказать только что документацию ты не читал вообще.
    Детали будут в ответе.
    Написано
  • Какие есть доки по сборке APK/AAB с использованием Android NDK?

    GNU-like_RobertOS0, хотелось бы для начала узнать, почему тебе для старта не хватает официальной же документации по NDK?
    Написано
  • Как использовать класс, определенный в двух подключаемых файлах?

    @MarkusD Куратор тега C++
    tamtakoe, ну, скажу честно, я сразу увидел, еще по вопросу, что навыков работы с этим кодом у тебя прямо нет. Были подозрения что ты чему-то на этом коде учишься. Может быть на плюсах работать, может быть с Godot разбираешься.
    Ну да ладно.

    Вот что я скажу. Ни один из ответов не решает твой вопрос вообще. У Wataru не костыль, но для твоего вопроса это не решение и не метод. Если навыков работы с obj-c/c/c++ у тебя мало, то завязывай терзать труп. Я так уж точно здесь умываю руки.
    Если эта штука тебе все-таки нужна, то предлагаю сходить на фриланс и оплатить профессионалу восстановление работоспособности кода.
    Разведение зависимостей в разный код и установка в этом коде моста является вообще единственным решением здесь.
    Написано
  • Как использовать класс, определенный в двух подключаемых файлах?

    @MarkusD Куратор тега C++
    tamtakoe,
    все конструкции, которые нужны, описаны здесь

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

    Вижу что ты описал только сторону Webkit. А что насчет используемых конструкций из Godot?
    Сейчас твоей целью является аналитически определить, каких зависимостей в webview_wk.mm больше: от Webkit или от Godot. Также важно оценить и качества этих зависимостей, насколько они сильно влияют на код webview_wk.mm.
    Зависимости эти ты будешь разводить в разные стороны. У тебя будет один файл с зависимостью на Webkit и второй - с зависимостью на Godot. Под вопросом сейчас стоит только методика разведения зависимостей.
    Все зависит от твоих ответов.
    Написано
  • Как использовать класс, определенный в двух подключаемых файлах?

    @MarkusD Куратор тега C++
    tamtakoe, с тикетом на гитхабе я ознакомлен.
    Тебе стоило сразу же писать конкретно о своей ситуации, так и вопросов к тебе было бы меньше, и ответы бы сразу верные пошли.
    Пока к тебе все еще есть вопросы. Для чего именно в .mm-файле присутствуют заголовки и WebView, и Godot одновременно? Ответ должен быть максимально узким и максимально профильным. Желательно вообще в тезисах определить все конструкции обеих библиотек, которые тебе требуются в этом .mm-файле. Еще важно описать почему тебе требуются именно эти конструкции из обеих библиотек.

    Для твоего вопроса есть несколько решений, но ни один из уже написанных ответов не приводит какое-либо из этих решений. От твоего ответа будет зависеть оптимальность выбора решения. Каждое из решений очень комплексное и требует детального объяснения. Поэтому тратить свое время на изложение всех я не буду. Да и не выберешь ты оптимальное, судя по всему, т.к. тебя нужно провести по критериям через вот такие вопросы.
    Написано
  • Что стоит учить с или c++ или c#?

    @MarkusD Куратор тега C++
    #, у меня все также. Читаю, вроде бы англицкий текст, а помню на своем родном. Интересно что и обратно это работает, когда надо что-то в документации или стандарте найти.

    Комментарий в ответы перенес. :)
    Написано
  • Как использовать класс, определенный в двух подключаемых файлах?

    @MarkusD Куратор тега C++
    tamtakoe, так значит, это Godot и Webkit.
    Какую задачу ты решаешь через одновременное подключение обоих заголовков на стороне obj-c?
    Написано
  • Как использовать класс, определенный в двух подключаемых файлах?

    @MarkusD Куратор тега C++
    Как в C++ избежать ошибки redefinition of 'Class3' в файле module.mm

    Никак. ODR непреложно.

    У тебя терминология плывет. Тебя люди сейчас не понимают. Имеющиеся ответы тому только подтверждение.
    module1.h экспортирует Class1, Class3

    Что такое "экспортирует"? C++ оперирует только объявлениями и определениями. Исправь свой вопрос согласно терминологии языка.

    В module1.h и module2.h может быть определена куча классов, нам по сути нужно исключить определение Class3 из module1.h для нашего module.mm

    Если менять нельзя, просто выкинь весь этот код. Он не достоин использоваться если в нем нельзя исправлять фундаментальные нарушения стандарта языка.
    В ином случае подобные помойки каждое свое определение заключают в условную компиляцию. Тогда тебе нужно знать макрос, который выключит код определения ненужного тебе типа.
    Написано
  • Что стоит учить с или c++ или c#?

    @MarkusD Куратор тега C++
    Владислав Калужский , всё как и всегда.
    Начинать нужно всегда с того языка, на котором ты думаешь, разговариваешь в быту и пишешь. С Русского языка. У тебя с ним, видно, все вполне хорошо. Пишешь понятно, мысли за словами прослеживаются.
    Значит нужно двигаться дальше. Следующим языком для тебя должен быть интернациональный. На этом языке идет общение в сообществах и передаются знания, как через книги, так и напрямую. Английским нужно владеть на уровне способности читать без запинки и словарей, также на английском нужно уметь внятно писать. Навыки устного общения будут плюсом, но на этапе обучения сильно не требуются.

    Языки программирования - это инструменты. А инструменты всегда надо выбирать от условий задачи. У тебя не выйдет решать все задачи только каким-то одним языком. Знать во всех тонкостях и уметь использовать строго по назначению Python, Java, C#, C++, Lua, TypeScript и, например, PHP не просто нормально, а важно.
    Бьерн Страуструп один раз говорил о том, что для настоящего инженера важно знать порядка 5 разных языков и разбираться в их особенностях, чтобы считать себя настоящим специалистом.

    Поэтому вообще не важно что ты выберешь на свой первый раз. Качество инженера раскрывается в его умении полноценно владеть множеством инструментов.
    Написано
  • Как идентифицировать переход результата от положительных значений в отрицательные?

    Canp, любую задачу можно решить десятками самых сложных и витиеватых вариантов. Например, вариантом как у Сережи в ответе или как у тебя в комментарии.
    Но как твою задачу решить качественно? Для этого надо просто подумать.

    Тебе нужно знание места перехода от положительных значений к отрицательным. Это знание в моменте можно получить через признак знака. Именно знание признака, а не знание самого знака.
    А это значит, нам нужен только булев флаг:
    is_negative = d < 0

    Тебе нужно знание только места смены знака, значит тебе надо знать, когда знак был один, а стал - другой.
    А это знание достигается через отслеживание признака знака на дистанции одного шага назад, через второй булев флаг:
    was_negative = is_negative

    Так и происходит формализация твоей потребности в терминах языка.
    was_negative = d < 0
    while d >= -xx:
    	d = x - y
    	x = d
    	
    	is_negative = d < 0
    	if is_negative != was_negative:
    		print('Marked!')
    	was_negative = is_negative
    	
    	print(d)

    Вариант Сережи не формализует твою потребность. Грубо говоря, там просто числа по смыслу подобраны, но твоя задача не решена.
    Написано
  • Комп или ноут для ue5?

    Владислав Лысков, в сбере личным пользоваться не запретят. Запретят абсолютно любым способом подключать личные тех.средства к корпоративным тех.средствам. При чем запрет будет не просто в ТД вписан, а еще и будет подкреплен штрафами, вызовом к сотрудникам внутренней безопасности и соответствующими мерами со стороны УК.
    Да, людей регулярно садят за уже просто попытку кражи данных. Т.е. вставил мобилу в комп "зарядиться" и пошел сразу на нары.
  • Почему перемещение объявления и инициализации переменной на новую строчку кода влияет на результат работы программы?

    @MarkusD Куратор тега C++
    vurdalaq, чтение неинициализированной переменной вносит неопределенное поведение в программу.
    Всегда, везде, в любом смысле.

    Неопределенным поведением, по стандарту C++, является в принципе и вообще любое поведение без каких-либо ограничений. Ожидаемое поведение тоже в этом случае будет неопределенным.
    Не "X засорится", а поведение всего твоего кода прямо начиная с первого for(unsigned i; i < len; i++) уже не определено. С самой первой же итерации этого цикла, если неопределенному поведению вообще заблагорассудится начать хоть одну итерацию этого цикла.

    Иными словами, UB - это то, чего в своем коде категорически нельзя допускать.
  • Почему возникает ошибка error C4430 в шаблоне, если выходной тип определен?

    @MarkusD Куратор тега C++
    Павел Соколов, вот. И с этим кодом уже все понятно.
    Тебе уже ответили и ответ действительно решающий. Но тем не менее.
    Смотри на WinAPI. Этот заголовок у тебя подключен через конфигурацию проекта и конфигурацию сборки.
    Эти макросы являются частью SAL, а подробности можно почитать тут.

    Твой стиль кода должен быть таким, чтобы не нарушать стандарт и не биться с библиотечными определениями.
  • Почему возникает ошибка error C4430 в шаблоне, если выходной тип определен?

    @MarkusD Куратор тега C++
    Павел Соколов,
    Я не понимаю что я делаю не так

    Ничего страшного. Мы тоже не понимаем что ты делаешь. В смысле, мы вообще не понимаем что ты делаешь.
    С такой подачей вопроса ответить на него разве что гадалка сможет, с соответствующим качеством ответа.

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

    Для шаблона нет разницы, в заголовке к DLL он написан или в каком-либо еще. Шаблон инстанцируется на стадии компиляции и всегда должен быть определен до места своего инстанцирования в модуле трансляции.
  • Как использовать потоки в современном C++ в приложении на основе цикла событий?

    @MarkusD Куратор тега C++
    Andrey_Epifantsev , а как тебе объясняли свои советы те, кто тебе эти std::future и std::async рекомендовали?
    Где они тебе советовали использовать эти примитивы и каким образом это должно улучшить, по их мнению, твой код?
  • Как переделать код под ООП?

    @MarkusD Куратор тега C++
    Sunter , а зачем этот код переделывать под ООП?
  • Что за странная запись в С++?

    @MarkusD Куратор тега C++
    Вова, я работаю с C++ уже 20 лет и просто знаком со стандартом языка. Понимаю что подобное знание является довольно тонким для обычного пользователя C++, но именно подобные знания позволяют людям не допускать огромное количество ошибок.
    Ну и еще работать в крутую компанию не возьмут без понимания стандарта.