4

使用前に関数を定義する代わりに、C/C++ でローカル関数を明示的にプロトタイプ化する利点はありますか? ローカルとは、ソース ファイル内でのみ使用される関数を意味します。例はこれです:

#include "header.h"

static float times2(float x){
    return 2*x;
}

static float times6(float x){
    return times2(3*x);
}

int main(void){

    // Other stuff ...

    float y = times6(1);

    // Other stuff ...
}

これに対して:

#include "header.h"

// Local function prototypes
static float times2(float);
static float times6(float);

// Main
int main(void){

    // Other stuff ...

    float y = times6(1);

    // Other stuff ...
}

// Local functions definition
static float times2(float x){
    return 2*x;
}

static float times6(float x){
    return times2(3*x);
}

個人的には、書くコードが少なく、(私にとっては) ファイルが読みやすいので、最初のオプションを使用することを好みますが、2 番目のオプションを好む技術的な理由があるかどうか疑問に思っています。

編集: times2() と times6() にstaticを追加しました。@Gangadhar の回答と以下のコメントを参照してください。

4

5 に答える 5

0

2 つの関数が相互に呼び出す場合、つまり FuncA() が FuncB() を呼び出す場合、およびその逆の場合は、いずれかの関数を宣言する必要があります。これは @MM (上記の回答) が説明した条件です。

しかし、通常の状況では、関数の宣言は単なる慣習であり、開発者によって異なります。

于 2013-10-22T09:26:44.290 に答える