在什么情况下,GCC not在try 调用组合函数时可能抛出"undefined reference"链接错误消息?

举个例子,有一种情况,这段C代码是由GCC编译链接的:

void function()
{
    made_up_function_name();
    return;
}

.即使代码中不存在made_up_function_name,anywhere(不是头文件、源文件、声明或任何第三方库).

GCC是否可以在特定条件下接受并编译这种代码,而不涉及实际代码?如果是,哪个?

谢谢

编辑:之前的声明或提到made_up_function_name在其他任何地方都不存在.这意味着整个文件系统的grep -Ronly显示确切的单行代码.

推荐答案

是的,使用--unresolved-symbols链接器选项可以避免报告未定义的引用.

g++ mm.cpp -Wl,--unresolved-symbols=ignore-in-object-files

man ld

--unresolved-symbols=method

确定如何处理未解析的符号.一共有四个 方法的可能值:

       ignore-all
           Do not report any unresolved symbols.

       report-all
           Report all unresolved symbols.  This is the default.

       ignore-in-object-files
           Report unresolved symbols that are contained in shared
           libraries, but ignore them if they come from regular object
           files.

       ignore-in-shared-libs
           Report unresolved symbols that come from regular object
           files, but ignore them if they come from shared libraries.  This
           can be useful when creating a dynamic binary and it is known
           that all the shared libraries that it should be referencing
           are included on the linker's command line.

共享库本身的行为也可以是

通常,链接器将 for each 报告的未解析符号,但选项--warn-unsolved-symbols可以 将此更改为警告.

C++相关问答推荐

Linux/C:复制修剪了最后一个填零孔的文件

有关字符数组指针和次指针以及qsort函数中的cmp函数的问题

如何从TPS特定的TGPT_PUBLIC数据 struct 中以OpenSSL的EVP_PKEY

问关于C中的指针和数组

球体—立方体重叠:无、部分或全部?

为什么写入系统调用打印的字符数不正确?

LibpCap禁用监视器模式(C、MacOS)

拥有3x3二维数组并访问数组[1][3]等同于数组[2][0]?

C中的指针增量和减量(*--*++p)

是否需要包括<;errno.h>;才能使用perror?

当b是无符号字符时,int a=(b<;<;2)>;>;2;和int a=b&;0x3F;之间有什么区别?

For循环不会迭代所有字符串字符吗?(初学者问题)

如何将大写/小写土耳其字母相互转换?

有没有一种方法可以用C创建保留限定符的函数?

在C程序中使用Beaglebone Black UART的问题

程序如何解释变量中的值

从文件到链表读取日期

GCC认为这是一个VLA是对的吗?

System V 消息队列由于某种原因定期重置

#define X Defined(Y) 是有效的 C/C++ 宏定义吗?