5

特定の時間形式を指定されたchar *に設定することになっているこの関数があります:

static void timeStamp(char* time)
{
  time(&strTime);<---ERROR
  curTime = std::localtime(&strTime);
  strftime(time, 8, "%H:%M::", curTime);    
}

strTime と curTime は次のように宣言されました。

tm* curTime; 
time_t strTime;

しかし、何らかの理由で私は得る:

called object type 'char*' is not a function or function pointer

マークされた場所に。

理由はありますか?

ちなみにxCodeを使っています。

4

6 に答える 6

12

関数パラメーターtimeは、char へのポインターです。

ただし、関数本体では、それが呼び出し可能な関数である場合、それを処理しようとしています。それはエラーが言っていることです...

type のオブジェクトがchar *関数でも関数ポインタでもない [したがって、呼び出すことができません!]

基本的にtime、同じ名前のローカル変数を持つことで関数を非表示にしました。関数パラメーターの名前を変更することをお勧めします。

于 2012-06-20T12:27:30.217 に答える
5

関数パラメーター

static void timeStamp(char* time)
{
  time(&strTime);<---ERROR
  // ...
}

関数をシャドウしtime()ます。パラメータの名前を変更します。

于 2012-06-20T12:27:24.557 に答える
2
static void timeStamp(char* time)  

ここで、このchar* timeパラメーターは関数をtime()隠しています。名前を変更する必要があります。

于 2012-06-20T12:29:59.060 に答える
1

関数 timeは、機能するパラメーターの名前でもありますtimeStamp。コンパイラは、関数であるかのように char* パラメータを呼び出そうとします。

于 2012-06-20T12:27:14.287 に答える
1

シンボル を再定義しtimeました。修正するには、次のことを試してください。

static void timeStamp(char *time)
{
    time_t strTime;

    { // brackets here are important!
        extern time_t time(time_t *);
        time(&strTime);
    }

    // ...
}

ここに角かっこを追加して、関数に追加のスコープを追加し、コンパイラにそれを伝え、コンパイラがhey, in this block, time is not a variable, its a function現在の変数名でも正常に動作できるようにします。

オプションで、次のようにグローバル名前空間指定子を使用することもできます。

static void timeStamp(char *time)
{
    ::time(&strTime);
    // ...
}
于 2012-06-20T12:27:34.193 に答える
0

timeは呼び出すことができないためchar*、パラメーター リストを確認してください。

名前を変更するだけで、問題はなくなります。

于 2012-06-20T12:27:15.883 に答える