# Here's an idea for a plugin system for a programming language: #include int run(int (plugin)(int id)) { printf("Step 1.\n"); if (plugin(0)) return 1; printf("Step 2.\n"); if (plugin(1)) return 1; printf("Step 3.\n"); if (plugin(2)) return 1; return 0; } int plugin(int id) { switch (id) { case 0: { printf("First, dab 'em up.\n"); } break; case 1: { printf("Then, hit 'em around.\n"); } break; case 2: { printf("Finally, rap da beat.\n"); } break; } return 0; } int main(void) { run(plugin); return 0; }