2015-09-01 73 views
-2

我一直在試圖找出爲什麼我的代碼口口聲聲說有第5行的錯誤我已經多次檢查的話其實我不知道什麼語法錯誤用下面的代碼:語法混亂用C

#include <stdio.h> 

void drawTriangle(int size){ 
     for(int i=1; i<=size; i++){ 
       for(int j = 1 ; j <=size-i; j++){ 
         printf(" "); 
         for(int j = 1; j <= 2*i-1;j++){ 
           printf("*"); 

           }printf("\n"); 
         } 
       } 

} 



int main(void){ 
drawTriangle(1); 
drawTriangle(5); 
drawTriangle(6); 
return 0; 
} 

錯誤解釋說,有上線5附近意外的標記「(」也行5上一個語法錯誤,說「無效drawTriangle(INT大小){」

+2

無法重現; 'gcc -Wall -std = c99 test.c'不會發出警告。 –

+0

請告訴我們錯誤在哪行,以及確切和完整的構建日誌是。 –

+0

我編譯過沒有錯誤。這是當我嘗試執行它,它給了我錯誤 – user3773272

回答

5

您正在嘗試運行C源作爲一個shell腳本,這是行不通的。你首先要編譯源到目標文件,升墨目標文件到可執行程序,並然後就可以運行完成的程序。

我建議你試試下面的命令:

$ gcc -Wall -std=c99 -c test.c -o test.o 
$ gcc test.o -o test 
$ ./test 

對於像你這樣簡單的程序,這是隻有一個或兩個文件,那麼你可以編譯和鏈接在一個命令:

$ gcc -Wall -std=c99 test.c -o test 
$ ./test 

順便說一句,它通常是一個壞主意來命名的POSIX環境(如Linux或OSX)test一個可執行程序,因爲有一個標準的shell命令調用test因爲我們如果你寫test而不是./test,你很可能會使用標準程序,而不是你自己的。

+1

注意:他需要添加'-std = c99'標誌來編譯這個特殊的代碼。建議使用'-std = c99 -pedantic -Wall -Werror'。 –

+0

'$ gcc -Wall -std = c99 test.c -o test &&。/ test'將在編譯成功時執行二進制文件。 – SnakeDoc

2

你試圖運行你的源文件爲可執行:

./test.c 

這不是它的工作原理。你需要編譯你的源代碼到一個可執行文件並運行它。

gcc -std=c99 -o test test.c 
./test