为什么我的函数没有被调用?我不明白为什么要宣布声明

时间:2018-05-11 17:07:41

标签: c gnu

大家好,

这是我的代码:

的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

operations.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

关于void add_mini(3)

好像我无法传递一个简单的整数值。调试时甚至会跳过add_mini行。 你知道发生了什么吗?

整个代码嵌入在一个较大的查询中以确定键入的订单,但这样可以正常工作。我无法通过这个简单的整数值。

提前致谢。

3 个答案:

答案 0 :(得分:4)

使用时

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);
}

答案 1 :(得分:3)

像这样调用函数:add_mini(3);而不是void add_mini(3);

答案 2 :(得分:2)

从main.c中删除调用add_mini的单词void:

add_mini(3);

或者

(void)add_mini(3);