C は静的にコンパイルされる言語であるため、実行時に関数を作成することは容易ではなく、一般的には可能ですらありません。必要な C コードを .c ファイルに書き出し、システム上でコンパイラを実行してから、オブジェクト ライブラリを動的にロードすることができます。最初の .c ファイルを書き出す過程で、関数に好きな名前を付けることができます。要するに、マクロを使用しても、やりたいことを実行することはできません。そして、今述べた方法を使用することは、大規模なハックです。可能ですが、お勧めできません。
関数の名前を変更するだけの場合、または事前に知っていてプログラムにコンパイルできる関数の限られたセットから選択する場合は、関数ポインターを使用できます。しかし、関数ポインターは変数関数を呼び出すために使用できる静的な名前 (シンボル) を提供するため、これはあなたがやろうとしていることの逆に思えます。
関数ポインターの名前を本当に変更する必要がある場合は、関数ポインターの配列を保持し、文字列マッピングを使用してそれらにインデックスを付けることができます。次に、文字列 (名前) を介してポインターを検索して関数を呼び出します。文字列はもちろん変更可能であるため、関数の「名前」を変更できます。しかし、これは非常に迂遠なルートであり、正直なところ、これを行う正当な理由がわかりません。
最後に、最も有用で正しい解決策は、独自のシンボル テーブルを持つ仮想マシンを実装することです。すでに実装されています。PythonとSlangが思い浮かびます。