【发布时间】:2019-01-24 16:54:16
【问题描述】:
这是否可以在 C 中以不同的名称导入库函数?
就像理想地说这种假的 C 语法:
char *malloc(int) as mymalloc;
而不是库文件中已知的malloc,它变为mymalloc。并且标识符 malloc 未声明,可用于将来的声明。
当第三方大头文件可以在以后可选地包含时,我需要它用于某些特定用例,但必须始终使用一些函数。因此,我需要另一个微标头,它定义了与较大标头稍后声明(或不声明)相同的几个函数。这一切都是编译为 C 的编程语言的一部分,所以奇怪的要求是小头文件必须在大头文件之前定义函数。我也不能使用一些琐碎的ifdef 解决方案,因为大标题不了解我,我无法修改它。有问题的函数将复杂的结构指针作为参数,但我只是将它们声明为谈话void*,因此编译器将在“不兼容的重新定义”处咆哮。
CLUMSY_STRUCTURE *create_struct();
do_something(CLUMSY_STRUCTURE *);
CLUMSY_STRUCTUREs 的定义很长,我不希望它们出现在我的小标题中。
我也不确定即使我重新定义 CLUMSY_STRUCTURE 编译器在看到第二个声明时是否会认为两个声明是兼容的。
【问题讨论】:
-
您能编写自己的所需名称的函数来简单地调用另一个函数吗?
-
如果你将“大头文件”中声明的子集保存为“小头文件”,那么“小头文件”可以安全地包含在“大头文件”之前。所以我不确定我是否理解这个问题。你能创建一个minimal, complete and verifiable example 来说明你的问题吗?
-
不,你不能...
-
#include "LargeHeader"之类的有什么问题?
标签: c