//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”中。我不知道该怎么说了。有没有人能帮上忙?
1条答案
按热度按时间dldeef671#
[已修复]向@Brian61354270大喊,他建议不编译头文件(
gcc -Wall -Wextra -Werror -pedantic -std=gnu89 -Wno-format main.h main.c print_int.c -o test
)并删除int main(void)
,解决了这个问题!