создание функций и инициализация переменных одновременно - PullRequest
0 голосов
/ 25 ноября 2010

Почему код ниже не скомпилирован?Для краткости я хотел бы, чтобы код был написан таким образом, который кажется синтаксически нормальным, но компилятор Linux gcc жалуется

#include <stdio.h>
void fn(int in, char ch, char* str);
int main()
{
     fn(int i2 = 20, char ch2 = 'Z', char* str2 = "Hello");
     printf("in2 = %d, ch2 = %c, str2 = %s\n", in2, ch2, str2);
     return;
}

void fn(int in, char ch, char* str)
{
    printf("int = %d\n", in);
    printf("ch = %c\n", ch);
    printf("str = %s\n", str);
    return;
}

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Поскольку в c89 (ANSI C) вы можете объявлять переменные только в начале блока.

int main()
{
    int i2 = 20; char ch2 = 'Z'; char* str2 = "Hello";
    fn(i2, ch2,str2);
    printf("in2 = %d, ch2 = %c, str2 = %s\n", in2, ch2, str2);
    return;
}

РЕДАКТИРОВАТЬ

В c99, даже если вы думаете, что в других частях, выне может декальрировать переменные внутри выражений (например, вызов функции).

0 голосов
/ 25 ноября 2010

Вы должны объявить свои переменные вне вызова функции, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...