C言語は、何かと面倒です。
なので、ソースの記述からコンパイルまでpythonでやってしまいました。

import subprocess

def fWrite(fn, src):
    f = open(fn, 'w')
    f.write(src)
    f.close() 

def batch(cmd):
    fn = "command.bat"
    fWrite(fn, cmd)
    subprocess.call("start " + fn, shell=True) 

src = """
#include <stdio.h>

int main(void){
    printf("Hello, World!");
    return 0;
}
""" 

fWrite("main.c", src)
batch(r"""
echo off
set PATH=C:\mingw-w64\x86_64-6.1.0-posix-seh-rt_v5-rev0\mingw64\bin;%PATH%
gcc -O3 -Wall main.c -o main.exe
main.exe
rem exit
""") 

と、こんな感じです。
C言語のソースとバッチファイルのソースをファイルに書き込んで、subprocess.callを使いバッチを起動させる方法です。
ソースはstringなのでpythonで簡単に加工できるので色んな使い方ができます。
バッチの中身を見れるし、かなり重宝です。
ipythonと組み合わせが文句なしです。