Ich arbeite an einer Hausaufgabe, um verschiedene Seitenersetzungsalgorithmen für meine Betriebssystemklasse zu implementieren. Ein Problem, das ich in laufen lasse, ist, dass ich jeden Algorithmus in einer anderen C-Datei implementieren möchten, und innerhalb jeder einzelnen Datei, verwenden die gleichen Funktionsnamen wie search()
, insert()
, updatePageTable()
usw.Wie man nur eine Funktion aus verschiedenen C-Dateien enthält
Allerdings, wenn ich kompilieren In den Dateien beschwert sich der Compiler über doppelte Symbole. Gibt es eine Möglichkeit, die Haupttestfunktion nur aus jeder anderen Algorithmusdatei zu importieren und diese Funktionen auf ihre Dateifunktionen verweisen zu lassen?
Können Sie versuchen, Ihr echtes Problem zu erklären, anstatt [dieses XY-Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). –
Sie können Funktionen in einer Datei verbergen, indem Sie sie als statisch deklarieren; Das ist eine gute Übung. Sie werden mindestens eine Funktion haben, die nicht so versteckt ist (manchmal wird das 'main()' sein, manchmal wird es eine andere Funktion sein). Wenn die nicht statische Funktion nicht 'main()' ist, sollten Sie einen Header haben, der diese Funktion deklariert. Der Header sollte verwendet werden, wenn die Funktion implementiert wird, um sicherzustellen, dass die Definition mit der Deklaration übereinstimmt, und der Header sollte verwendet werden, wenn die Funktion verwendet wird, um sicherzustellen, dass sie korrekt verwendet wird. –
Beachten Sie, dass ein bestimmtes Programm nur eine extern sichtbare Definition eines bestimmten Funktionsnamens enthalten kann. Das heißt, es kann höchstens eine Datei geben, die eine globale (extern sichtbare) Funktion namens insert() definiert, aber es gibt möglicherweise viele Dateien, die eine statische Funktion namens insert() definieren. Diese Dateien können jedoch nicht referenzieren oder sogar die globale Funktion erklärt haben. –