Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы? https://chunminchang.github.io/blog/post/how-to-simulate-a-c-class-in-c
Здравствуйте, qqqqq, Вы писали:
Q>Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы?
Самое первое предложение было от Страуструпа.
Сдается мне, проще всего и наиболее конструктивно забить на "хочется"
Здравствуйте, qqqqq, Вы писали:
Q>Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы? Q>https://chunminchang.github.io/blog/post/how-to-simulate-a-c-class-in-c
Здравствуйте, qqqqq, Вы писали:
Q>Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы? Q>https://chunminchang.github.io/blog/post/how-to-simulate-a-c-class-in-c
Написать свой транслятор. Это вообще не сложно. Грамматика Си примитивная, есть готовая в различных открытых генераторах грамматик. Модифицировать для своих нужд тоже легко. Далее парсим, строим AST и одним проходом сразу транслируем в Си.
У меня когда-то была идея нечто подобное, чтобы добавить в Си немного безопасности. Например, пару аргументов size_t, void* можно оборачивать в один аргумент типа, который бы инкапсулировал непрерывный отрезок памяти известной длины. А добавив функции prefix(), suffix() и так далее можно было бы избавиться от ошибки "off by 1". Я позже был рад увидеть реализацию этой идеи в С++ в виде span.
Здравствуйте, qqqqq, Вы писали:
Q>Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы? Q>https://chunminchang.github.io/blog/post/how-to-simulate-a-c-class-in-c
Кросскомпиляция возможна ?
Может получится собрать компилятор C++ , и далее потом писать на плюсах.
Здравствуйте, _NN_, Вы писали:
Q>>Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы? Q>>https://chunminchang.github.io/blog/post/how-to-simulate-a-c-class-in-c
_NN>Кросскомпиляция возможна ? _NN>Может получится собрать компилятор C++ , и далее потом писать на плюсах.
Здравствуйте, qqqqq, Вы писали:
Q>Что делать если компилятор только C (встроенная система) a хочется писать на C++?
Поискать бэкенд к llvm под свой таргет. Мб получится. Q>Вот тут к примеру предложение а есть еще методы?
gobject, но это боль.
Здравствуйте, kov_serg, Вы писали:
_NN>>Кросскомпиляция возможна ? _NN>>Может получится собрать компилятор C++ , и далее потом писать на плюсах.
_>Вы объём еб&и представляете?
И чо? GTK на подобных трюках строится. Или обертки/шаблоны реализации по COM.
Да и WINAPI изначально задумывалась как объектно-ориентированная, хотя на Си.
Здравствуйте, pagid_, Вы писали:
Q>>Что делать если компилятор только C (встроенная система) a хочется писать на C++? Не совсем на C++, конечно, но хотя бы на C с классами (C). Типа driver1.Init(), driver1.Send()... driver-у естествено нужны свои данные типа начала адресов регистров, или там внутренний временный буффер. Соответственно driver2 — другие данные. Вот тут к примеру предложение а есть еще методы? _>Самое первое предложение было от Страуструпа. _>Сдается мне, проще всего и наиболее конструктивно забить на "хочется"
Меня всегда интересовала, а сам никогда не пробовал: почему в таком случае нельзя писать на С++ и делать статическую линковку? По идее должно получится просто standalone приложение. Или есть какие-то проблемы?
Здравствуйте, B0FEE664, Вы писали:
BFE>Меня всегда интересовала, а сам никогда не пробовал: почему в таком случае нельзя писать на С++ и делать статическую линковку? По идее должно получится просто standalone приложение. Или есть какие-то проблемы?
манглинг имен. Нужно тогда extern "C" переходники ещё делать. Ну и для сишечки указатели на объекты кастовать в void* и обратно. Геморно. Ну и ТС сказал, что на платформе нет компилятора плюсов
Здравствуйте, Marty, Вы писали:
BFE>>Меня всегда интересовала, а сам никогда не пробовал: почему в таком случае нельзя писать на С++ и делать статическую линковку? По идее должно получится просто standalone приложение. Или есть какие-то проблемы? M>манглинг имен. Нужно тогда extern "C" переходники ещё делать. Ну и для сишечки указатели на объекты кастовать в void* и обратно. Геморно.
Ерунда. Всегда так делаю.
M>Ну и ТС сказал, что на платформе нет компилятора плюсов
Компилятор и собрать можно...
Кросс компиляцию, опять же, никто не отменял, а для статики должно ещё проще быть.