gpt4 book ai didi

c++ - 如何在生成依赖文件中包含 IBM XLC 模板 *.c 文件?

转载 作者:行者123 更新时间:2023-11-28 08:34:21 25 4
gpt4 key购买 nike

对于 XLC 编译器,模板化代码放在 *.c 文件中。然后,当使用模板函数编译程序时,编译器会在 .c 文件中找到模板定义并实例化它们。

问题是在执行 xlC -qmakedepend 生成构建依赖项时,这些 .c 文件默认不包含在内。因此,如果您更改其中一个 .c 文件,您将不会自动构建依赖于它的所有内容。

有没有人找到解决这个问题的好方法?

最佳答案

简而言之,答案是使用 XLC 的 tempinc 实用程序进行迁移。

tempinc 实用程序要求您使用 header 文件(.h 或 .hpp)中的模板声明和 .c 文件中的实现来设置您的文件(此扩展名是必需的)。当编译器找到模板实例化时,它会将显式实例化放入您的 tempinc 目录中的另一个源文件中,强制为它们生成代码。编译器知道在 foo.c 中找到在 foo.h 中 declered 的模板定义。

我指定的问题是依赖项构建器不知道这一点,因此无法将您的 .c 文件包含在依赖项中。

使用版本 6.0 IBM recommends using a the -qtemplateregistry setting 而不是 -qtempinc。然后,您可以使用典型的模板设置,将模板定义包含在头文件中,然后依赖项查找器可以看到它们,或者将它们放在您从头文件中#include 的单独文件中,并且也将是使用依赖项查找器找到。

如果您从使用 -qtempinc 迁移,您可以使用如下代码有条件地从您的声明文件中 #include 您的模板实现文件:

// end of foo.h
#ifndef __TEMPINC__
#include "foo.c"
#endif

因此,如果您决定返回使用 -qtempic 设置,您的代码将构建和链接。

关于c++ - 如何在生成依赖文件中包含 IBM XLC 模板 *.c 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/168938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com