Modular C
Public Wrapper
A wrapper function can present a small interface over lower-level details.
interface function
The caller uses a simple function name instead of repeating the formula.
implementation detail
The formula can change inside the wrapper without changing the call site.
Public Wrapper
public_wrapper.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
static int rectangle_area(int width, int height) {
return width * height;
}
int main(void) {
int width = 6;
int height = 5;
int area = rectangle_area(width, height);
printf("area=%d\n", area);
return 0;
}
#include <stdio.h>
static int rectangle_area(int width, int height) {
return width * height;
}
int main(void) {
int width = 4;
int height = 5;
int area = rectangle_area(width, height);
printf("area=%d\n", area);
return 0;
}
#include <stdio.h>
static int rectangle_area(int width, int height) {
return width * height;
}
int main(void) {
int width = 9;
int height = 5;
int area = rectangle_area(width, height);
printf("area=%d\n", area);
return 0;
}
width ← 6, height ← 5
7int main(void) {8 int width→ 6 = 6; //@width=4, 99 int height→ 5 = 5;10 int area = rectangle_area(width6, height5);static int rectangle_area(int width, int height)
3static int rectangle_area(int width6, int height5) {4 return width6 * height5;5}area ← 30
9 int height = 5;10 int area→ 30 = rectangle_area(width6, height5);1112 printf("area=%d\n", area30);13 return 0;14}outputarea=30
width ← 4, height ← 5
7int main(void) {8 int width→ 4 = 4;9 int height→ 5 = 5;10 int area = rectangle_area(width4, height5);static int rectangle_area(int width, int height)
3static int rectangle_area(int width4, int height5) {4 return width4 * height5;5}area ← 20
9 int height = 5;10 int area→ 20 = rectangle_area(width4, height5);1112 printf("area=%d\n", area20);13 return 0;14}outputarea=20
width ← 9, height ← 5
7int main(void) {8 int width→ 9 = 9;9 int height→ 5 = 5;10 int area = rectangle_area(width9, height5);static int rectangle_area(int width, int height)
3static int rectangle_area(int width9, int height5) {4 return width9 * height5;5}area ← 45
9 int height = 5;10 int area→ 45 = rectangle_area(width9, height5);1112 printf("area=%d\n", area45);13 return 0;14}outputarea=45