我見過這樣幾個函數的定義,而最近與GNU野牛玩:C中這個奇怪的函數定義語法是什麼?
static VALUE
ripper_pos(self)
VALUE self;
{
//code here
}
爲什麼self
外的括號的類型?這個有效的C嗎?
我見過這樣幾個函數的定義,而最近與GNU野牛玩:C中這個奇怪的函數定義語法是什麼?
static VALUE
ripper_pos(self)
VALUE self;
{
//code here
}
爲什麼self
外的括號的類型?這個有效的C嗎?
這些都是老K & [R風格函數參數聲明,聲明參數類型的分別:
int func(a, b, c)
int a;
int b;
int c;
{
return a + b + c;
}
這是一樣的更現代的方式來聲明函數參數:
「新風格」聲明基本上普遍受歡迎。
如果您省略了任何參數的類型定義,則該參數將被假定爲int。另外,如果你省略了返回類型,它將被假定爲int。例如:func(a,b,c){return a + b + c; } – Ferruccio 2010-06-10 16:23:12
只是FWIW,K&R風格仍然有時用於編碼高爾夫球...... – 2010-06-10 16:29:03
是,它使用了其中的參數,SANS類型,括號中列出函數定義的舊風格,其次是這些變量與他們的函數體的開括號之前類型的聲明。所以self
的類型是VALUE
。
這是聲明函數參數的所謂「舊」變體。在過去的日子裏,你不能只在圓括號內寫出參數類型,但是你必須在右括號之後爲每個參數定義它。
換句話說,就相當於ripper_pos(VALUE self)
這是一個非常古老的C代碼,您首先指定參數名稱,然後指定它們的類型。參見例如here。
這是舊 c。 K & R C在ANSI C強制輸入參數之前使用了此慣例。
static VALUE // A static function that returns 'VALUE' type.
ripper_pos(self) // Function 'ripper_pos' takes a parameter named 'self'.
VALUE self; // The 'self' parameter is of type 'VALUE'.
請參閱[此C語法有什麼用處?](http://stackoverflow.com/questions/1630631/what-is-useful-about-this-c-syntax)。 – 2010-06-10 16:16:06