Что делать если компилятор только 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>Ну и ТС сказал, что на платформе нет компилятора плюсов
Компилятор и собрать можно...
Кросс компиляцию, опять же, никто не отменял, а для статики должно ещё проще быть.
Здравствуйте, B0FEE664, Вы писали:
M>>Ну и ТС сказал, что на платформе нет компилятора плюсов BFE>Компилятор и собрать можно...
Ага, и бэкенд для целевой платформы написать
BFE>Кросс компиляцию, опять же, никто не отменял, а для статики должно ещё проще быть.
Само собой, кросс-компиляция. А то я слабо представляю какой-нибудь MCS-51 в качестве хост платформы Плюсовых кросс-компиляторов я для него тоже не видел, хотя, бают, IAR вроде умеет
Здравствуйте, Marty, Вы писали:
BFE>>>>Компилятор и собрать можно... M>>>Ага, и бэкенд для целевой платформы написать BFE>>Что означает сия фраза? M>Что именно не понятно в этой фразе?
бэкенд — это термин из web-разработки означающий серверную часть сервиса. Какое отношение имеет бэкенд к сборке тулчейна под целевую платформу?
Здравствуйте, B0FEE664, Вы писали:
M>>Что именно не понятно в этой фразе? BFE>бэкенд — это термин из web-разработки означающий серверную часть сервиса. Какое отношение имеет бэкенд к сборке тулчейна под целевую платформу?
У термина "бэкэнд" много значений. Никогда не слышал, что у компилятора бывает фронтэнд и бэкэнд? Clang, например, по такой схеме построен
Здравствуйте, Marty, Вы писали:
BFE>>бэкенд — это термин из web-разработки означающий серверную часть сервиса. Какое отношение имеет бэкенд к сборке тулчейна под целевую платформу? M>У термина "бэкэнд" много значений. Никогда не слышал, что у компилятора бывает фронтэнд и бэкэнд? Clang, например, по такой схеме построен
Может и слышал — не помню.
Для платформы имеющий компилятор C нужно писать бэкэнд для С++?
Здравствуйте, B0FEE664, Вы писали:
M>>У термина "бэкэнд" много значений. Никогда не слышал, что у компилятора бывает фронтэнд и бэкэнд? Clang, например, по такой схеме построен BFE>Может и слышал — не помню. BFE>Для платформы имеющий компилятор C нужно писать бэкэнд для С++?
Для такой платформы скорее придётся писать фронтэнд для C++
Здравствуйте, qqqqq, Вы писали:
Q>a хочется писать на C++ Типа driver1.Init(), driver1.Send()
представь, что я твой манагер. Можешь мне доказать, предметно, с показом реальных примеров разрабатываемого у вас промышленного кода, что вот на C, а вот на C++, чтобы было видно, что мы теряем прибыль?
Здравствуйте, student__, Вы писали:
__>представь, что я твой манагер. Можешь мне доказать, предметно, с показом реальных примеров разрабатываемого у вас промышленного кода, что вот на C, а вот на C++, чтобы было видно, что мы теряем прибыль?
Да я так однажды "доказывал". Чистый С без С++. Через год мне стало скучно и я уволился. Проект поставили "на паузу".