我正在更新一些旧代码,并且不小心在里面留下了一个不再定义的宏:
// "DETAIL" is not defined anywhere
if (DETAIL ("notebook")) {
// ...
}
代码仍然可以编译和链接(它是一个 .so 库),但是当它被加载时,我得到:
gtk3-widget-factory: symbol lookup error: /usr/lib/gtk-3.0/3.0.0/
theming-engines/libmurrine.so: undefined symbol: DETAIL
为什么这在编译时没有被捕获?我猜 CDETAIL
没有任何定义就认为它是一个函数int -> int
,对吧?有没有办法让编译器(gcc)更严格并在编译时抱怨?我不认为我在源文件或头文件中直接使用任何没有定义的符号。