c++ - .tpp 文件中的 doxygen 和模板问题
问题描述
我已经开始使用 Doxygen(预编译 1.8.14)在 Windows 10 上为我的 C++ 项目生成简单的代码文档。
在一个头文件中,我定义了三个模板函数,我的定义放在头文件末尾的 .tpp 文件中。查看生成的输出,似乎 doxygen 没有读取此文件。因此我得出结论 doxygen 不支持这一点。
然而,根据手册(http://www.doxygen.nl/manual/starting.html),它说“任何其他扩展都被解析为 C/C++ 文件。” 这种功能真的没有实现吗?
IPC.hpp(示例)
class IPC {
public:
template <class T, int N>
bool setData(std::vector<T> data, Offsets offset);
template <class T, int N>
std::array<T, N> getData(Offsets offset);
template <class T, int N>
bool getData(std::array<T, N> &data, Offsets offset);
bool getTrigger(Offsets selector, long timeout_ms = 0);
void setTrigger(Offsets selector, Status on);
};
#include "IPC.tpp"
IPC.tpp(示例)
#pragma once
/*! Writes to the shared memory object.
\param data gives the data that will be written.
\param offset gives the byte offset from the start of the file.
\return bool: true on completion
\sa getData()
*/
template <class T, int N>
bool IPC::setData(std::vector<T> data, Offsets offset) {
//Calculate the memory block size from the type and number
unsigned int block_size = sizeof(T) * N;
//Safety check
if (block_size + offset > _size) {
std::cerr << "Error at IPC::setData(): Block size is bigger than memory block size" << std::endl;
return false;
}
if (data.size() < N) {
std::cerr << "Error at IPC::setData(): Data array is smaller than N" << std::endl;
return false;
}
//Create mapped_region
mapped_region region(_shm, read_write, offset, block_size);
for (int i = 0; i < N; i++) {
std::memcpy((char* ) region.get_address() + sizeof(T) * i, &(data.at(i)), sizeof(T));
}
return true;
}
解决方案
供将来参考:添加tpp=C++
到EXTENSION_MAPPING
(expert/project
在 doxywizard 中)和*.tpp
到FILE_PATTERNS
(expert/input
在 doxywizard 中)。
推荐阅读
- c# - Microsoft.JSInterop.JSException:找不到(DxBlazor.Input.loadModule)
- python - 在使用 lru_cache 装饰器时将不同的参数模式视为相同的调用
- php - 使用 php / jquery 最好地返回 Hubspot 错误
- node.js - 如何使用节点 js 在 mongo db 中查找 db
- github - Terraform:是否可以连接多个 github 组织?
- angular - 无法将变量从一个组件传递到另一个组件 - 已关闭
- java - Android 在启动时崩溃
- python - 制作插件管理器:AttributeError:模块'main'没有属性'run'
- rxjs - Angular:等待查询字符串参数,但如果没有出现,请执行其他操作
- css - 下拉选择材质ui的位置