C语言编译报错:undefined reference to `main' 问题求助
解决编译时"undefined reference to
main"错误 错误原因
你遇到的链接错误是因为C程序必须包含main()函数作为执行入口点,而你的代码里只有_isupper()这个功能函数,没有程序启动的入口,链接器无法生成可执行文件。
解决方法
根据你的需求,有两种处理方式:
方式1:添加main函数用于测试
如果要直接编译成可执行程序测试_isupper()功能,需要在代码中添加main()函数,比如:
#include "main.h" #include <stdio.h> /** *_isupper - checks for uppercase character *@c: character to be checked *Return: 1 if true, 0 if false */ int _isupper(int c) { if (c >= 'A' && c <= 'Z') { return (1); } else { return (0); } } // 添加测试用的main函数 int main(void) { char test_char = 'B'; printf("Is '%c' uppercase? %d\n", test_char, _isupper(test_char)); test_char = 'b'; printf("Is '%c' uppercase? %d\n", test_char, _isupper(test_char)); return 0; }
之后再用你原来的编译命令即可生成可执行文件。
方式2:编译为目标文件(不生成可执行程序)
如果这个文件只是一个功能模块,后续要和其他含main()的文件一起编译,只需用-c参数只编译不链接,生成目标文件:
gcc -Wall -pedantic -Werror -Wextra -std=gnu89 -c 0-isupper.c -o 0-isupper.o
之后可以把这个.o文件和其他包含main()的代码文件一起编译链接,比如:
gcc -Wall -pedantic -Werror -Wextra -std=gnu89 0-isupper.o main.c -o program
内容的提问来源于stack exchange,提问作者peter stephen
相关产品推荐
相关产品推荐

