class TC_JOIN(姓名){}
class TC_JOIN (NAME) {}
我找到了下面的代码here:
class Cipher {
...
};
#define TC_TRIAL(NAME, BLOCK_SIZE, KEY_SIZE) \
class TC_JOIN (Cipher,NAME) : public Cipher { \
...\
}
TC_CIPHER (AES, 16, 32);
我知道这是一个宏,(NAME, BLOCK_SIZE, KEY_SIZE)
是附加参数,但是在预处理器替换替换列表中出现的任何相应参数之后,我们应该得到这样的结果,我收集到:
class TC_JOIN (Cipher,AES) : public Cipher {
...
}
TC_JOIN (Cipher,AES)
让我有点困惑(尤其是括号部分的添加)。您能帮我解释一下这个句法结构到底是什么意思吗?
TC_JOIN
定义在 VeraCrypt/src/Platform/PlatformBase.h:
#define TC_JOIN_ARGS(a,b) a##b
#define TC_JOIN(a,b) TC_JOIN_ARGS(a,b)
它连接两个参数。
当您不确定符号的含义时,请搜索其定义。我看到 Cipher.h
(您引用的 header)包括 Crypto/config.h
和 Platform/Platform.h
。当我意识到 Platform.h
是一个 header,它只包含其他 header 的负载时,我放弃了那条路线并使用 github 搜索来查找所有出现的 TC_JOIN
。其中之一是 #define TC_JOIN ...
。给你。
我找到了下面的代码here:
class Cipher {
...
};
#define TC_TRIAL(NAME, BLOCK_SIZE, KEY_SIZE) \
class TC_JOIN (Cipher,NAME) : public Cipher { \
...\
}
TC_CIPHER (AES, 16, 32);
我知道这是一个宏,(NAME, BLOCK_SIZE, KEY_SIZE)
是附加参数,但是在预处理器替换替换列表中出现的任何相应参数之后,我们应该得到这样的结果,我收集到:
class TC_JOIN (Cipher,AES) : public Cipher {
...
}
TC_JOIN (Cipher,AES)
让我有点困惑(尤其是括号部分的添加)。您能帮我解释一下这个句法结构到底是什么意思吗?
TC_JOIN
定义在 VeraCrypt/src/Platform/PlatformBase.h:
#define TC_JOIN_ARGS(a,b) a##b
#define TC_JOIN(a,b) TC_JOIN_ARGS(a,b)
它连接两个参数。
当您不确定符号的含义时,请搜索其定义。我看到 Cipher.h
(您引用的 header)包括 Crypto/config.h
和 Platform/Platform.h
。当我意识到 Platform.h
是一个 header,它只包含其他 header 的负载时,我放弃了那条路线并使用 github 搜索来查找所有出现的 TC_JOIN
。其中之一是 #define TC_JOIN ...
。给你。