Tengo un número de matrices muy largas. No es posible ordenar en tiempo de ejecución. También lleva mucho tiempo ordenarlos manualmente. Además, se pueden agregar nuevos elementos en cualquier orden posterior, por lo que me gustaría ordenarlos por valor usando el preprocesador C o tal vez haya algún indicador de compiladores (GCC)?¿Es posible ordenar matrices utilizando el preprocesador?
Por ejemplo:
sometype S[] = {
{somevals, "BOB", someothervals},
{somevals, "ALICE", someothervals},
{somevals, "TIM", someothervals},
}
, que deben seleccionarse de manera:
sometype S[] = {
{somevals, "ALICE", someothervals},
{somevals, "BOB", someothervals},
{somevals, "TIM", someothervals},
}
RESUELTO
Ok, aquí está mi solución:
- copiar manualmente & pegar cada matriz en un archivo temporal denominado tobesorted.c
- Ordenar por segunda columna:
sort -b -i --key=2 tobesorted.c
- Copia & salida de pasta de nuevo en archivo original.
En realidad, sería bueno tener alguna posibilidad de llamar "ordenar" directamente desde el preprocesador (tenía la esperanza de que al menos GCC de alguna manera admite tales características, pero parece que no).
Como puede #incluir cualquier archivo en cualquier línea, podría hacer el tipo de letra S [] = {\ n # include "sorted_array_elements.txt" \ n}; y no se moleste en copiar/pegar, lo que lleva tiempo y algunas veces puede salir mal. – nategoose