0

おそらくCとC ++に適用される初心者の質問。私が持っているとしましょう

void myfunc() {
    blah;
}

したがって、この関数を次のように呼び出します。

myfunc();

ただし、次のように「呼び出し」しても、コンパイラ エラーは発生しません。

myfunc;

プログラムは実行されますが、myfunc が呼び出されません。では、C++ はこれを何と解釈しているのでしょうか。

今、私は Arduino IDE でこれを行っています。すべて 1 つの大きなコードのかたまりなので、セグメンテーション違反などは発生しません。したがって、動的にリンクされたホストで実行時エラーがスローされる可能性があります。

4

3 に答える 3

3

myfunc括弧なしは、メモリ内の関数のアドレスです。

たとえば、関数を他の関数に渡す必要がある場合は、それを使用します。

これの良い例はbsearch、一般的な検索を行うためにユーザー定義のコンパレータ関数を渡す必要がある C 標準ライブラリにあります。

于 2013-10-23T02:46:24.733 に答える
1

コンパイラは式を評価するだけです。関数の名前を評価しているので、基本的にノーオペレーションです。

それはちょうどこのようなものです:

int main() {
    42; // evaluates 42 but does nothing with it
}

とにかく、コンパイラは、式の結果が未使用であることを警告する必要があります。

于 2013-10-23T02:44:52.367 に答える