vazeri / WSPREncode

WSPR Encoder modified Library for Arduino
GNU General Public License v3.0
1 stars 0 forks source link

Compilar el programa de C++ a C #1

Open vazeri opened 6 years ago

vazeri commented 6 years ago

Citado del correo original de Juan

El código tiene que estar escrito en C. Es un plus si el código original se lo puede pasar a C.

PD: Se agrega la librería completa de JTEncode en caso de requerirla.

Se puede realizar de forma automatizada la compilación de C++ a C utilizando

http://www.comeaucomputing.com

Sin embargo tiene de fecha 2013, por lo que reportare los resultados en cuanto lo pruebe, de otra manera la conversión debe ser manual y podría tomar bastante tiempo

Otra alternativa es revisar la POSIBLE implementación de gcc, gcc-arm, arm-cc o iar en linux una máquina virtual o incluso un servidor E2C de AWS

vazeri commented 6 years ago

Información relevante

http://www.cs.technion.ac.il/users/yechiel/c++-faq/convert-to-c.html

https://stackoverflow.com/questions/1833484/c-frontend-only-compiler-convert-c-to-c

vazeri commented 6 years ago

Se ha creado una solución para el atmega 328p en 0358081 para atmel studio 7.0 para iniciar el Port de C++ a C, se ha solucionado el problema del flasheo del programa desactivando la función de flasheo

vazeri commented 6 years ago

relevante, el consenso general es no convertir manualmente de C++ a C pues no ofrece ningún beneficio

https://stackoverflow.com/questions/297122/what-should-i-keep-in-mind-when-porting-from-c-to-c

https://cboard.cprogramming.com/cplusplus-programming/101166-can-someone-provide-tips-order-convert-cplusplus-code-into-c-code.html

https://stackoverflow.com/questions/737257/how-to-convert-c-code-to-c

https://www.quora.com/Can-we-convert-c++-program-to-c-language

Los precompiladores automaticos previamente publicados aqui, genran un codigo imposible de debuggear.

La mayor parte de las funciones tienen su equivalente en C, hay que revisar una por una a detalle

Aun con estos problemas ya he iniciado un port manual de las funciones WSPR par auqe WSPR funcione de manera autónoma,(omitiendo en su totalidad JTEncode)

Aun queda como pendiente probar los compiladores GCC en linux

vazeri commented 6 years ago

se han extraído directamente las funciones de los objetos de C++ a C en sin embargo no se ha iniciado el proceso de verificación de librerías compatibles ni de debugeo del programa, de momento es solo un boceto aproximado https://github.com/vazeri/JTEncode/commit/b88965e47a097e54ef40308719dd7dddb4348413 lo que sigue es un proceso de conversion manual linea por linea de todo el programa

vazeri commented 6 years ago

Al ser una característica opcional, de momento he decidido parar el desarrollo para trabajar directamente en C++ debido a que es irrelevante el lenguaje una vez compilado en hexadecimal, sin embargo, creare un fork alterno para continuar la implementación en C++ dejando el master en el proyecto con el proyecto preparado para su port en C utilizando Atmel Studio

vazeri commented 6 years ago

entiendo que el enfoque a POO puede ser confuso y es mejor aplicar un paradigma de Programación por procedimientos, sin embargo el hacer un port, a C garantizaria que se generen errores que no existen y estariamos modificando algo que no tiene ningun problema