Modular C
Module Config
A small configuration value can be centralized so functions agree on limits.
shared limit
Centralizing a limit avoids repeating unexplained numbers in each function.
enum constant
An `enum` constant gives the compiler a named integer without preprocessor substitution.
Module Config
module_config.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
enum {
MAX_ITEMS = 4
};
static int capped_count(int requested) {
if (requested > MAX_ITEMS) {
return MAX_ITEMS;
}
return requested;
}
int main(void) {
int requested = 6;
int count = capped_count(requested);
printf("count=%d\n", count);
return 0;
}
#include <stdio.h>
enum {
MAX_ITEMS = 4
};
static int capped_count(int requested) {
if (requested > MAX_ITEMS) {
return MAX_ITEMS;
}
return requested;
}
int main(void) {
int requested = 2;
int count = capped_count(requested);
printf("count=%d\n", count);
return 0;
}
#include <stdio.h>
enum {
MAX_ITEMS = 4
};
static int capped_count(int requested) {
if (requested > MAX_ITEMS) {
return MAX_ITEMS;
}
return requested;
}
int main(void) {
int requested = 5;
int count = capped_count(requested);
printf("count=%d\n", count);
return 0;
}
requested ← 6
14int main(void) {15 int requested→ 6 = 6; //@requested=2, 516 int count = capped_count(requested6);static int capped_count(int requested)
7static int capped_count(int requested6) {8 if (requested > MAX_ITEMS) {if (requested > MAX_ITEMS)
7static int capped_count(int requested) {8 if (requested6 > MAX_ITEMS4) {9 return MAX_ITEMS4;10 }count ← 4
15 int requested = 6; //@requested=2, 516 int count→ 4 = capped_count(requested6);1718 printf("count=%d\n", count4);19 return 0;20}outputcount=4
requested ← 2
14int main(void) {15 int requested→ 2 = 2;16 int count = capped_count(requested2);static int capped_count(int requested)
7static int capped_count(int requested2) {8 if (requested > MAX_ITEMS) {9 return MAX_ITEMS;10 }11 return requested2;12}count ← 2
15 int requested = 2;16 int count→ 2 = capped_count(requested2);1718 printf("count=%d\n", count2);19 return 0;20}outputcount=2
requested ← 5
14int main(void) {15 int requested→ 5 = 5;16 int count = capped_count(requested5);static int capped_count(int requested)
7static int capped_count(int requested5) {8 if (requested > MAX_ITEMS) {if (requested > MAX_ITEMS)
7static int capped_count(int requested) {8 if (requested5 > MAX_ITEMS4) {9 return MAX_ITEMS4;10 }count ← 4
15 int requested = 5;16 int count→ 4 = capped_count(requested5);1718 printf("count=%d\n", count4);19 return 0;20}outputcount=4