[英]C throw compiler warning (clang) if transitively included function is used
我有三个类和相应的 header 文件,user.c、foo.c 和 util.c。 util.c 包含 foo.c 依赖的函数,但我更希望 user.c 不调用。 理想情况下,user.c 只会调用 foo.c 中的函数。 现在,user.h/.c 包含 foo.h/.c,foo.h/.c 包含 util.h/.c,因此所有 util 函数都可传递地包含在 user.c 中。
我不需要对用户隐藏 util.c 内容,但我想知道如果 user.c 从 util 调用过某些东西,是否有办法用 clang 抛出编译器错误/警告(或类似的东西) .c。 这可能吗?
我已经看到一些关于 PIMPL 的东西来隐藏私有标头,但宁愿不处理额外的 memory 和其他权衡。
我有以下内容:user.c
#include user.h
foofunction(); //can call both of these just fine
utilfunction(); //would like to have a compiler warning if this is called
用户.h
#include foo.h
foo.c
#include foo.h
void foofunction(){utilfunction();};
foo.h
#include util.h
void foofunction();
工具.h
#include util.c
void utilfunction();
效用.c
//no includes, just some functions
void utilfunction(){};
对于 C,只要它是全局的,就没有对任何 API/变量的任何保护。 为了不在其他文件中公开 API,您应该:
#define
并检查 private.h 文件中是否存在,如果不存在则抛出 #error。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.