Herbruikbare C-bibliotheken bouwen: een stapsgewijze handleiding

7

C is een minimalistische taal. Het geeft je de basis van programmeren. Je krijgt variabelen, lussen en controlestroom. Dat is het. Als je vanaf een toetsenbord wilt lezen of naar een scherm wilt afdrukken, heeft C deze functies niet ingebouwd. Je moet ze schrijven of een bibliotheek gebruiken.

Dit is de reden waarom bibliotheken in C zo cruciaal zijn. Het zijn stukjes code die programmeurs uit hun projecten halen om ze herbruikbaar te maken. Waarschijnlijk heb je de standaard I/O-bibliotheek, of stdio, gebruikt zonder erover na te denken. Maar daarnaast zijn er bibliotheken voor wiskunde, tekenreeksen en tijd. Je kunt je eigen bouwen.

Door uw code in modules op te splitsen, wordt het gemakkelijker om te testen, fouten op te sporen en te begrijpen. Je kunt er ook logica mee hergebruiken in verschillende programma’s. Laten we eens kijken hoe we een monolithisch script kunnen omzetten in een draagbare functie.

Logica uit een monoliet extraheren

Overweeg dit C-programma. Het vult een array met willekeurige getallen, sorteert ze met behulp van een bellensorteringsalgoritme en drukt de resultaten af.

De sorteerlogica ligt hier verborgen in main. Om dit herbruikbaar te maken, moeten we de bellensoort extraheren.

Een basisfunctie creëren

De array a en de constante MAX zijn in dit voorbeeld globaal. Dit betekent dat de sorteerfunctie niet strikt parameters nodig heeft om er toegang toe te krijgen. Goede praktijk dicteert echter het gebruik van lokale variabelen voor de lustellers (x, y, t ) om de functie op zichzelf te houden.

Hier is de gerefactoreerde code. We hebben de sorteerlogica geïsoleerd in bubble_sort.

Je geeft het aantal elementen door aan bubble_sort in plaats van MAX hard te coderen. Het werkt. Maar het is nog steeds gebonden aan de globale array ‘a’.

Generaliseren voor echte herbruikbaarheid

Een functie is pas echt herbruikbaar als deze niet afhankelijk is van de mondiale toestand. We kunnen bubble_sort verder generaliseren door de array zelf als parameter door te geven.

Wijzig de functiehandtekening in:

Dit vertelt de compiler dat hij een array met gehele getallen van elke grootte moet accepteren. De hoofdtekst van bubble_sort verandert niet. Je werkt gewoon de aanroep bij in main :

Merk op dat we &a niet gebruiken in de functieaanroep. Je zou verwachten dat je het adres doorgeeft omdat de sortering de array wijzigt, maar in C vervallen arrays naar pointers wanneer

Попередня статтяRoku Streaming Stick: MHL versus HDMI-versies uitgelegd
Наступна статтяHoe televisie evolueerde van kathodestralen naar digitale schermen met hoge resolutie