1. ホーム
  2. c

[解決済み] C 言語はオプションの NULL パラメータをサポートしていますか?

2022-02-10 22:51:11

質問

Pythonでは、次のようなことがあります。

def send_command(command, modifier = None):

とすると、モディファイアの引数はオプションで、引数がない場合は引数0と区別できるのですが、C言語でも同様の機能があるのでしょうか? C言語の経験が浅く、ググってもC言語のオプションパラメータの使い方が明確に書かれていないのですが、このように同様に代入することができるようです。

void send_command(uint8_t command, uint8_t modifier = 0) {

ということは、第2引数はオプションで、使用しない場合はデフォルトで0になるのですね。 (編集: いいえ、これはとにかく無効なC言語です)

しかし、この関数は send_command(SOMETHING)send_command(SOMETHING, 0) ? 2番目のパラメータには、0を含む任意のuint8値を指定することが理想的です。

もしかしてNULLは0と違う?

void send_command(uint8_t command, uint8_t modifier = NULL) {

解決方法は?

C言語では、オプションのパラメータをサポートしていません。また、同様の効果を得るためにしばしば使用される関数のオーバーロードもサポートしていません。