我有時想嘗試一些很短的事情來確認 的語義。由於創建臨時文件並把在 樣板時間超過30秒,我有這樣的腳本:
#!/bin/sh
body="$1"
out=$(mktemp /tmp/ccrun-XXXXXX)
src=${out}.c
cat > ${src} <<EOF
#include <limits.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#define UNUSED __attribute__((unused))
int main(int UNUSED argc,char UNUSED *argv[])
{
EOF
echo "$body" >> ${src}
echo -e "return 0;\n}" >> ${src}
cc -std=c99 -Wall -Wextra ${CCRUN_FLAGS} -o ${out} ${src} -lm
shift
echo ${out} "[email protected]"
${out} "[email protected]"
#rm ${out} ${src}
樣品調用(這代碼靜態初始化函數指針數組)看起來像:
$ ccrun 'int f(int a){return a+1;} int g(int a){return a+2;} int (*farr[2])(int) = {f,g}; for (int i=0; i<2; i++) printf("%d %d\n",i,farr[i](i));'
/tmp/ccrun-6nT4Wo
0 1
1 3
如果我想進行一些更改,我只需編輯命令行。 如果在命令行中變得笨拙,我將編輯 臨時文件,在這種情況下爲/tmp/ccrun-6nT4Wo.c
。命令行 可執行程序的參數可以在程序之後給出(第一個參數爲 )。可執行文件保留在原位,以便在不重新編譯的情況下運行 。你可以爲任何 語言做類似的事情。
來源
2008-11-09 20:24:47
Jed
相關:[有沒有好的在線IDE?](http://stackoverflow.com/questions/491721/) – 2011-03-07 01:54:14