我很抱歉标题不好,但除了“我不明白这段代码”之外,我没有想到更好的东西。请随时提出修改建议。
我正在阅读这段代码。我从未见过这样的 C 函数:
static void
VL_XCAT(_vl_vlad_encode_, SFX)
(TYPE * enc,
TYPE const * means, vl_size dimension, vl_size numClusters,
TYPE const * data, vl_size numData,
TYPE const * assignments,
int flags)
{
// function body
}
Run Code Online (Sandbox Code Playgroud)
特别是我对(_vl_vlad_encode_, SFX). 据了解,我见过的所有函数头都只有一对“圆括号”(函数的参数),而这里有两对。
第一个是什么意思?我认为这是与以后的调用_vl_vlad_encode_f和_vl_vlad_encode_d等不出现其他地方在库中的代码,但我不明白它们是如何连接的。
小智 5
VL_XCAT是一个通常用于连接两个标记的宏。( A ## B) 这意味着它将从两个参数创建一个标记,即:
_vl_vlad_encode_
和
SFX- 可能是为使用的浮点变量类型定义的 ( double/ float)
我会说这将在 double 和 float 函数之间进行选择以使用和使用_vl_vlad_encode_f 或_vl_vlad_encode_d基于定义。
因此,如果
#define SFX d
Run Code Online (Sandbox Code Playgroud)
它将_vl_vlad_encode_d在处理此行后创建。
| 归档时间: |
|
| 查看次数: |
435 次 |
| 最近记录: |