这个函数输入在C语言中意味着什么:MODELDIR“/ en-us / en-us”

时间:2017-11-20 09:08:36

标签: c function input arguments pocketsphinx

我从the PocketSphinx tutorial

中读取了以下代码
config = cmd_ln_init(NULL, ps_args(), TRUE,
             "-hmm", MODELDIR "/en-us/en-us",
                 "-lm", MODELDIR "/en-us/en-us.lm.bin",
                 "-dict", MODELDIR "/en-us/cmudict-en-us.dict",
                 NULL);

我第一次看到变量 - MODELDIR - 在字符串旁边 - "/en-us/en-us"。这怎么可能?我在C / C ++教程书中从未见过这样的东西!

如果我想搜索有关此内容的更多信息,我应该使用哪些关键字进行搜索?

1 个答案:

答案 0 :(得分:4)

MODELDIR扩展为字符串。 C将相邻的字符串连接成单个字符串*,因此如果MODELDIR#define d到"/foo/bar",则会导致以下函数调用:

config = cmd_ln_init(NULL, ps_args(), TRUE,
             "-hmm", "/foo/bar/en-us/en-us",
                 "-lm", "/foo/bar/en-us/en-us.lm.bin",
                 "-dict", "/foo/bar/en-us/cmudict-en-us.dict",
                 NULL);

*)所以,写

"Hello, " "World!"

完全相同
"Hello, World!"