Почему не вызывается моя функция?Я не понимаю, почему ожидается объявление - PullRequest
0 голосов
/ 11 мая 2018

Привет, ребята,

это мой код:

main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlite3.h"
#include "db_typedefs.h"
#include "operations.h"
int main(){
    printf("Text\n");
    int f = 3;
    void add_mini(3);
}

operations.h

#ifndef ADD_OPERATIONS_H_INCLUDED
#define ADD_OPERATIONS_H_INCLUDED

void add_mini(int flag);
#endif // ADD_OPERATIONS_H_INCLUDED

операций.c

void add_mini(int flag)
{
    int rc;
    rc = flag;
    printf("%i\n", rc);
}

В файле Operations.c также есть библиотеки, похожие на main.c.

Ошибка компилятора

error: expected declaration specifiers or '...' before numeric constant

в отношении аннулирования add_mini (3)

Кажется, я не могу передать простое целочисленное значение.Во время отладки он даже пропускает строку add_mini.У вас есть идеи, что происходит?


Весь код встроен в более крупный запрос для определения типовых заказов, но это прекрасно работает.Я просто не могу передать это простое целочисленное значение.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Удалить слово void для вызова add_mini из main.c:

add_mini(3);

или

(void)add_mini(3);
0 голосов
/ 11 мая 2018

Когда вы используете

void add_mini(3);

компилятор считает, что это объявление функции, а не вызов функции. Аргумент 3 недопустим для объявления функции. Следовательно, компилятор жалуется.

Удалите часть void для вызова функции.

int main(){
    printf("Text\n");
    int f = 3;
    add_mini(3);
}

или, поскольку вы инициализировали f до 3,

int main(){
    printf("Text\n");
    int f = 3;
    add_mini(f);
}
0 голосов
/ 11 мая 2018

Вызовите функцию так: add_mini(3); вместо void add_mini(3);

...