странное определение функции в интерфейсе Scilab <-> C - PullRequest
0 голосов
/ 27 ноября 2009

Я говорю об этом примере оболочки Scilab <-> C: http://www.scilab.org/doc/intro/node89.html.

Странная часть этого:

int intsfoubare(fname) 
 char *fname;
   {
     ....(some code)
   }

Это какое-то определение функции, но я действительно не понимаю, для чего char * fname хорош и просто для fname, так как параметр не имеет смысла для меня.

Кто-то может объяснить это?

[начать плакать] Документация Scilabs в целом является негативным примером, но когда дело доходит до C-интерфейса, это еще хуже. [конец плача]

Спасибо!

Ответы [ 4 ]

1 голос
/ 27 ноября 2009

Я считаю, что вы смотрите на объявление функций в стиле K & R. Это приблизительно эквивалентно int intsfoubare(char *fname) { ... }, но позволяет более гибко вызывать функцию. См. этот пост для более подробной информации.

0 голосов
/ 06 января 2013

Кстати, документация Scilab по этому вопросу теперь намного лучше!

См .: http://help.scilab.org/docs/current/en_US/api_scilab.html

0 голосов
/ 27 ноября 2009

Это определение функций в старом стиле (до стандартизации ANSI / ISO C в 1989 году).В настоящее время с прототипами это написано (хотя старый стиль все еще принят) как

int intsfoubare(char *fname)
{
    ....(some code)
}
0 голосов
/ 27 ноября 2009

Я не знаю Scilab, но я знаю французский!

"foubare" звучит как французский для "foobar". Это может быть случай с фиктивной или тестовой функцией, которую какой-то разработчик (случайно?) Оставил на месте.

fname звучит как имя имени файла, переданного как символьный указатель.

Может быть, это немного поможет.

Что касается способа использования fname: в более старом, "классическом" определении языка C было (на самом деле все еще) допустимо помещать в скобках только имя переданного параметра и объявлять введите позже. Вы больше не видите этого, но это не совсем неправильно. Просто сделайте вид, что в скобках написано (char *fname).

...