我沒有發現C99標準中的計數函數參數的任何限制,我想它只受堆棧大小的限制。函數參數最大數量
但是我寫了一個簡單的測試程序來演示大量參數的函數的行爲。當其10K左右,我得到的gcc下面的錯誤(在Cygwin的gcc版本4.5.3):
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o):(.text+0xa9): undefined reference to `[email protected]'
我意識到,參數,大計數是不可能的,但我不知道什麼參數的編譯器來確定這個限度?
EDIT
腳本來生成C-源
#!/bin/sh
num=$1
echo "" > out.c
echo "#include <stdio.h>" >> out.c
echo "int getsum(" >> out.c
i=0
while [ $i -lt $num ]
do
((i++))
if [ $i -eq $num ]
then
echo "int p$i)" >> out.c
else
echo -ne "int p$i," >> out.c
fi
done
echo "{" >> out.c
echo -ne " return " >> out.c
i=0
while [ $i -lt $num ]
do
((i++))
if [ $i -eq $num ]
then
echo "p$i;" >> out.c
else
echo -ne "p$i + " >> out.c
fi
done
echo "}" >> out.c
echo "int main(){" >> out.c
echo "printf(\"Sum of %d elements is %d\", $num, getsum(" >> out.c
i=0
while [ $i -lt $num ]
do
((i++))
if [ $i -eq $num ]
then
echo "$i" >> out.c
else
echo -ne "$i," >> out.c
fi
done
echo "));" >> out.c
echo "return 0;}" >> out.c
gcc out.c
./a.exe
保健佳品導致此代碼? – 2012-01-27 14:35:20
@Martinsh Shaiters我寫了一些sh腳本來生成源代碼。見updt – triclosan 2012-01-27 14:37:05