0

次のコードは、VC++ および clang でコンパイルできません。

int f()
{
    return 0;
}

int main()
{
    // error : called object type 'int' is not a function or function pointer
    int f = f(); 
}

場合によっては必要です。たとえば、 という名前の文字列の文字数を計算する関数がありcountますが、別の関数パラメーターも明示的に として名前が付けられていcountます。

size_t count(char* sz)
{
    return strlen(sz);
}

bool check_count(char* sz, size_t count)
{
    return count == count(sz); // ???
}

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

答えは簡単です。これはサポートされていません。C は、他の多くの言語と同様に、すべてのシナリオを完全にサポートできるわけではありません。そんな目標を掲げるのは無理がある。誰もこれを達成しようとはしませんでした。

特定のケースでは、パラメーターの名前を変更する必要があります。関数のスコープは常に限定されています。常に全体として再コンパイルされます。ヘッダー ファイルのプロトタイプのパラメーターの名前は、異なる名前を持つ場合があります。関数本体のパラメーターの名前変更は、99.9999% のケースで機能します。

于 2014-06-21T11:21:40.867 に答える