ich ein Stück C-Code wie das vor kurzem schrieb:Sollte ich daran denken, dass das Deklarieren aller statischen C-Funktionen eine gute Praxis ist?
static void func1()
{
}
static void func2()
{
}
typedef void (*func_t)(void);
const func_t lookUpTable[FUNC_COUNT] =
{
[FUNC1] = &func1,
[FUNC2] = &func2
}
Eine andere Programmierer auf der gleichen Datei bearbeitet und verändert es an:
static void func1();
static void func2();
typedef void (*func_t)(void);
const func_t lookUpTable[FUNC_COUNT] =
{
[FUNC1] = &func1,
[FUNC2] = &func2
}
static void func1()
{
}
static void func2()
{
}
Da die funcN Funktionen nur durch genannt werden In der Nachschlagetabelle brauche ich die Deklarationen dieser Funktionen eigentlich nicht.
Ist es Geschmackssache oder gibt es einen Codierungsstil, der als gute/schlechte Praxis angesehen wird?
Vielen Dank für Ihre Antworten!
"Ich brauche nicht die Deklarationen" - Sie tun es immer noch! Ohne Sie können nicht tem in Ihrer Tabelle verwenden. Das Auslassen von "statischem" OTOH macht die _Deklaration_ extern nicht nur den Namen/das Symbol. – Olaf
Es gibt vielleicht ein Vokabularproblem hier. Ist es besser, wenn ich sage "Ich brauche keine Prototypen"? Ich meine, wenn ich * die * Funktionen * deklariere * die gleichzeitig erklärt werden. Gehört das zu deinem Standpunkt? Was den letzten Teil Ihres Kommentars anbelangt: Bedeutet es, dass ohne den 'static' der Name/das Symbol öffentlich wäre? Wenn also dieser Name in einer anderen Übersetzungseinheit verwendet wird, würde die Kompilierung abgebrochen, weil der Body/die Implementierung (?) Nicht gefunden werden konnte. – Plouff
1) Verwenden Sie '@ name', um einen Kommentar zuverlässig zu adressieren. Dein letzter Kommentar macht es mir nicht klarer. Vielleicht wird mein Originalkommentar deutlicher, wenn ich in der Mitte halte, dass ich dazu tendiere, das Standard-C-Vokabular zu verwenden. Schau es dir einfach an. Und Sie ** brauchen ** die Prototypen (die ** sind ** _declarations_). Und ohne 'static' hat ein im Dateibereich deklarierter Name _external linkage_. Der Begriff "öffentlich" wird vom Standard nicht verwendet (und hat eine andere Bedeutung, beispielsweise in C++). – Olaf