1
#include <opcodes.h>
const char *getOpcodeName(
    uint8_t op
)
{
    #define OPCODE(x, y) if((0x##y)==op) return "OP_" #x;
        OPCODES
    #undef OPCODE
    return "OP_UNKNOWN";
}

ここのコードへのリンク: https://github.com/znort987/blockparser/blob/master/opcodes.cpp

含まれているopcodes.hへのリンクは次のとおりです。

これは奇妙にフォーマットされた関数であることは理解しています*が、関数名の先頭にある が正確に何を意味するのか疑問に思っています。私はそれがポインタと関係があると思いますか?

また、#undefand#defineステートメントはどのように有効ですか? どちらの後にもセミコロンはなく、そのうちの 1 つは 1 行の関数として定義されているようです。とは(0x##y)どういう意味ですか? とはreturn "OP_" #xどういう意味ですか? 私はこれまでにこのような構文に出くわしたことがありません。

私は C++ にもっと真剣に取り組みたいと思っていますが、コードを見て何が起こっているのかを正確に理解するのは非常に困難です。構文とルールを最も効果的に学習するにはどうすればよいですか?

4

2 に答える 2