2017-11-20 7 views
1

私はそれは私がvariable-- MODELDIRを見るのは初めてthe PocketSphinx tutorialこの機能入力はC言語で意味どういう:MODELDIR "/ EN-US/EN-US"

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); 

から次のコードを読んで - 文字列の横に - "/en-us/en-us"。これはどのように可能ですか?私はC/C++のチュートリアルの本の中でこのようなことは全く見たことがありません!

これに関する詳細情報を検索する場合、検索に使用するキーワードは何ですか?

+0

MODELDIRは文字列になるマクロになります連結して長いファイルまたはディレクトリ名を作成します。 –

答えて

4

MODELDIRマクロ文字列に展開します。 Cは*、単一のものに隣接した文字列を結合し、そのMODELDIR"/foo/bar"から#define Dだろうと、これは次の関数呼び出しにつながる:

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!" 
+0

@ user145959の例は、Pocketsphinxのチュートリアル(https://cmusphinx.github.io/wiki/tutorialpocketsphinx/)のようです。私はこれをgccでうまくビルドすることができましたが、CMakeListsファイルにいくつかのパラメータを追加しようとしたCLionの新しいインストールでは、次のようになりました。 '' ' [path] /hello_ps.c:16:5:警告:型が長すぎる文字定数 MODELDIR( "en-us"); ^ '' ' – Philip

関連する問題