.c Interfaccia dedicata ai dati

2

È del tutto inaudito avere un file .c dedicato solo ai dati? Nel mio caso, lo userei per le variabili globali che sono condivise su altri due file .c . Ecco in particolare come lo sto usando.

// serverth.h

struct serverth_parameters {
    struct { // right now, this is the only struct needed
        char * root,
             * user,
             * public,
             * site;
    } paths;

    // I anticipate needing another struct here

};

#ifndef SERVERTH_SOURCE
extern struct serverth_parameters parameters;
#endif
// serverth.c

#define SERVERTH_SOURCE
#include "serverth.h"

struct serverth_parameters parameters = {
    .paths = { // macros are actually used here
        "/srv",
        "/user",
        "/public"
        "/site"
    }
};

parameters è una struttura che viene utilizzata per un server websockets, in due file:

  • Uno per HTTP (utilizza parameters.paths.site )
  • Due per i protocolli proprietari (entrambi utilizzano .paths.user , uno utilizza paths.public )

È una cattiva pratica? Le persone fanno questo? Oppure, è più convenzionale conservare solo i dati nel file sorgente in cui è più pertinente?

    
posta tay10r 12.06.2013 - 22:20
fonte

1 risposta

3

In generale, diffidare dei file "dumping", in cui si inizierebbe ad elencare le variabili globali o le lunghe liste di #define s.

Tuttavia, se per "globals" in realtà intendevi che questi globali sarebbero costanti, allora sembrerebbe accettabile, purché siano strutturati e raggruppati in schemi significativi, e che l'estensione del loro riutilizzo giustifica l'estrazione li in un file separato.

Se queste condizioni non sono soddisfatte, di solito le trattengo nel file in cui dovrebbero essere utilizzate, se possibile.

Includi guardie

Su una nota diversa, non so come vengono compilati i file e quale sistema di generazione si utilizza, ma si potrebbe desiderare di utilizzare le guardie di compilazione del modulo:

#ifndef MY_MODULE
# define MY_MODULE

/* stuff here */

#endif
    
risposta data 13.06.2013 - 00:11
fonte

Leggi altre domande sui tag