0

我有三个 .asn 文件。这三个文件被asn.1编译器编译后,每个文件在输出文件夹中都有对应的目录。在每个文件夹中,都有许多由 asn.1 编译器生成的 C 源文件。总有一个.c 文件与.asn 文件同名(扩展名除外,即test.asn 和test.c)。在这个文件中,定义了一些函数;之类asn_allocasn_free

因此,有三个文件实现了asn_allocasn_free功能。我将在我的 C 项目中使用所有生成的 C 文件。

问题是,asn_alloc函数是在三个地方定义的。这就是我收到编译器错误的原因:

函数的多重定义

我该如何处理这个问题?我认为编辑生成的源文件不是一个好主意。

4

1 回答 1

0

此问题特定于您正在使用的 ASN.1 工具。使用一些 ASN.1 工具(例如http://www.oss.com上的工具),您可以在同一编译中包含所有 .asn 文件,以便生成一个所有名称均已消除歧义的 .c 文件,或者您可以在每个编译中使用 -prefix xxx 选项,其中每个 ASN.1 编译的 xxx 不同,从而导致生成的名称以 xxx 为前缀,因此不会发生冲突。

于 2013-04-23T16:15:48.340 回答