A small program can start from defaults and apply an explicit override before computing derived settings.

default value Defaults give the program a predictable baseline when no override is supplied.
derived setting After validation, later calculations can use one resolved value instead of repeating fallback logic.

Config Defaults

overrideTimeout
config_defaults.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

int main(void) {
    int overrideTimeout = 0;
    int timeout = 10;
    int retries = 3;

    if (overrideTimeout > 0) {
        timeout = overrideTimeout;
    }

    int budget = timeout * retries;

    printf("timeout=%d retries=%d budget=%d\n", timeout, retries, budget);
    return 0;
}
#include <stdio.h>

int main(void) {
    int overrideTimeout = 5;
    int timeout = 10;
    int retries = 3;

    if (overrideTimeout > 0) {
        timeout = overrideTimeout;
    }

    int budget = timeout * retries;

    printf("timeout=%d retries=%d budget=%d\n", timeout, retries, budget);
    return 0;
}
#include <stdio.h>

int main(void) {
    int overrideTimeout = 20;
    int timeout = 10;
    int retries = 3;

    if (overrideTimeout > 0) {
        timeout = overrideTimeout;
    }

    int budget = timeout * retries;

    printf("timeout=%d retries=%d budget=%d\n", timeout, retries, budget);
    return 0;
}
  1. overrideTimeout ← 0, timeout ← 10, retries ← 3, budget ← 30

    3int main(void) {4    int overrideTimeout→ 0 = 0; //@overrideTimeout=5, 205    int timeout→ 10 = 10;6    int retries→ 3 = 3;78    if (overrideTimeout > 0) {9        timeout = overrideTimeout;10    }1112    int budget→ 30 = timeout10 * retries3;1314    printf("timeout=%d retries=%d budget=%d\n", timeout10, retries3, budget30);15    return 0;16}
    outputtimeout=10 retries=3 budget=30
  1. overrideTimeout ← 5, timeout ← 10, retries ← 3

    3int main(void) {4    int overrideTimeout→ 5 = 5;5    int timeout→ 10 = 10;6    int retries→ 3 = 3;
  2. timeout ← 5

    8if (overrideTimeout5 > 0) {9    timeout→ 5 = overrideTimeout5;10}
  3. budget ← 15

    12    int budget→ 15 = timeout5 * retries3;1314    printf("timeout=%d retries=%d budget=%d\n", timeout5, retries3, budget15);15    return 0;16}
    outputtimeout=5 retries=3 budget=15
  1. overrideTimeout ← 20, timeout ← 10, retries ← 3

    3int main(void) {4    int overrideTimeout→ 20 = 20;5    int timeout→ 10 = 10;6    int retries→ 3 = 3;
  2. timeout ← 20

    8if (overrideTimeout20 > 0) {9    timeout→ 20 = overrideTimeout20;10}
  3. budget ← 60

    12    int budget→ 60 = timeout20 * retries3;1314    printf("timeout=%d retries=%d budget=%d\n", timeout20, retries3, budget60);15    return 0;16}
    outputtimeout=20 retries=3 budget=60