小编peq*_*snp的帖子

未定义的编译器接受的函数引用

好的,我有这个代码:

str.c:

char *str = "example";
Run Code Online (Sandbox Code Playgroud)

main.c中:

int str(void);

int main(void)
{
    str();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

生成文件:

CC = gcc
CFLAGS = -Wall -g

all: main

main: main.o str.o

main.o: main.c
str.o: str.c

clean:
    rm -rf *.o main
Run Code Online (Sandbox Code Playgroud)

乍一看,有人可能会说这是一个未定义的参考错误或类似的东西.但编译器只接受此代码.

问题是,为什么我没有得到编译错误?

很明显,该功能没有正确定义.如果我使用gdb打破str()调用,我得到一个警告类型函数str未定义..

c compiler-errors compilation linker-errors

7
推荐指数
1
解决办法
450
查看次数

标签 统计

c ×1

compilation ×1

compiler-errors ×1

linker-errors ×1