1

私は、OpenCL エラー コードから人間が読める文字列への非常に単純な変換を作成していることに気付きました。50 ほどの異なるコードが、次のようなヘッダー ファイルで定義されます。

...
#define CL_INVALID_CONTEXT -34
#define CL_INVALID_QUEUE_PROPERTIES -35
#define CL_INVALID_COMMAND_QUEUE -36
#define CL_INVALID_HOST_PTR -37
...

専門家のコピー/貼り付けを使用して、これらすべてを巨大なスイッチ/ケースに入れました。

...
case CL_INVALID_CONTEXT:
  return "CL_INVALID_CONTEXT";
case CL_INVALID_QUEUE_PROPERTIES:
   return "CL_INVALID_QUEUE_PROPERTIES";
case CL_INVALID_COMMAND_QUEUE:
   return "CL_INVALID_COMMAND_QUEUE";
case CL_INVALID_HOST_PTR:
    return "CL_INVALID_HOST_PTR";
...

私は最近 Vim を使い始めたので、Linux コマンド ツールと Vim を使用して、より効率的な方法でこれを行う方法があるのではないかと考えています。誰かがEmacsでそれをやったと主張する同様の投稿がここにありました。次回同様のタスクで 15 分間を無駄にしないようにするためのアイデアはありますか?

( oclErrorSting()が存在する可能性があることは知っていますが、一般性のために無視しましょう!)

4

2 に答える 2

2

Vim でこれを行うには、検索と置換を使用します。

%s/#define \(\w\+\).*/case \1:^M  return "\1";/g

^M出力でを取得する秘訣は、入力CTRL-VしてからEnter、出力の改行を入れたい場所に置くことです。

これにより、ファイル全体が置換されます。

これは、行全体に一致する検索を実行し、それを目的のテキストに置き換えることで機能します。各名前は検索でグループに取り込まれます。\(\w\+\)それが が行っていることであり、一致したテキストが置換で 2 回使用されます。

于 2013-04-15T18:27:35.457 に答える