C语言 为什么我得到一个:“函数'print_int'的隐式声明?

w6lpcovy  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(81)
//main.h
#ifndef PRINTF                                                             
#define PRINTF                                                             
                                                                           
#include <stdio.h>                                                         
#include <limits.h>
                                                                           
typedef struct specifiers                                                  
{                                                                          
        char s;                                                            
        int (*func)(char *s, int i);                                       
} spec_t;                                                                  
                                                                           
int print_int(int);                                                        
int _putchar(char c);                                                      
int _puts(char *s);                                                        
int main(void);                                                            
                                                                           
#endif
//print_int.c
int print_int(int input)
{
        int tmp;
        int i;

        if (input == 0)
        {
                i = 0;
                return (i);
        }

        tmp = (input % 10) + 48;
        i = print_int(input / 10);
        putchar(tmp);
        i++;

        return (i);
}
//main.c
#include "main.h"                                                          
#include <limits.h>                                                        
#include <stdio.h>                                                        
                                                                           
int main(void)                                                             
{                                                                          
        int test = INT_MAX;                                                
                                                                           
        test = print_int(test);                                            
                                                                           
        printf("\n%i", test);                                              
                                                                           
        return (test);                                                     
}

这些是使用以下命令编译的:第一个月
由于某些原因,这些文件在编译时不会链接。有人有什么主意吗?
我尝试将int print_int(int);的函数原型直接放入“main.c”文件中。这是可行的,但我希望所有的原型都在“main.h”中。我不知道该怎么说了。有没有人能帮上忙?

dldeef67

dldeef671#

[已修复]向@Brian61354270大喊,他建议不编译头文件(gcc -Wall -Wextra -Werror -pedantic -std=gnu89 -Wno-format main.h main.c print_int.c -o test)并删除int main(void),解决了这个问题!

相关问题