GOOGLE ADS

miércoles, 20 de abril de 2022

Use macros de preprocesador C (solo las constantes) como variables de Python

Estoy escribiendo un código Python que necesita interoperar con el código C que también escribí. En CI tiene una sección como

#define FOO 23 // whatever
#define BAR 54.3 // something else

Quiero usarlos en python (ya que las variables regulares están bien). No estoy encontrando nada en mis búsquedas en la web, y fácilmente podría escribir un analizador, pero... No puedo creer que sea el primero con tal necesidad. PyPreprocessor se acerca, pero no exactamente.

¿Hay una manera obvia de hacerlo que me falta?


Solución del problema

Tal vez sea excesivo, pero podría usar el analizador del módulo dissect.cstruct.

Actualmente admite definiciones simples de preprocesador y expresiones simples como #define TWO (ONE+1), pero no admite condicionales como #ify #ifdef.

ejemplo de código

from dissect.cstruct import cstruct 
defs_str = """
#define FOO 23 // whatever
#define BAR 54.3 // something else
"""
c = cstruct()
c.load(defs_str)
print(c.consts) # => {'FOO': 23, 'BAR': 54.3}
print(c.FOO) # => 23
print(c.BAR) # => 54.3

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...