0

この単純なタイマーの例から取られた次のコード スニペットを実行しようとしています。

#include <sys/time.h>
#include <stdio.h>

int SetTimer(struct timeval &tv, time_t sec) {
    gettimeofday(&tv, NULL);
    tv.tv_sec += sec;

    return 1;
}

int CheckTimer(struct timeval &tv, time_t sec) {
    struct timeval ctv;
    gettimeofday(&ctv, NULL);

    if ((ctv.tv_sec > tv.tv_sec)) {
        gettimeofday(&tv, NULL);
        tv.tv_sec += sec;
        return 1;
    } else {
        return 0;
    }
}

int main() {
    struct timeval tv;
    SetTimer(tv, 5); //set up a delay timer
    printf("start counting.\n");
    while (1)
        if (CheckTimer(tv, 5) == 1)
            printf("Welcome to cc.byexamples.com\n");
    return 0;
}

次のエラーが表示されます: フィールドtv_secを解決できませんでした

Webで調べてみましたが、具体的な回答はないようです。

私はライブラリsys/time.hを調べてみましたtime.hが、どのライブラリにもこの構造が定義されているようには見えませんが、とにかく使用されています。

ライブラリがありませんか?この例はかなり古いので、別の方法で実行する必要がある何か変更がありましたか? どんな光景でもありがたいです。

PS: Ubuntu 11.10 および g++ 4.6.1 で Eclipse CDT Indigo を使用しています。

4

2 に答える 2

0

これをファイルに入れてみてください: #define __USE_GNU

于 2013-06-20T12:19:18.930 に答える
0

time.hライブラリにインデックスを付けることができなかったため、最終的には Eclipse の問題でした。この他のSFの質問の最も支持された回答に従って解決しました:

time.hC/C++ インデクサーに手動で追加します。

現在、Eclipse CDT Juno を使用していますが、問題は発生していないようです。Eclipse CDT Juno のサイド コメントとして、C/C++ インデクサー設定を手動で編集する場所が見つかりませんでした。

于 2013-08-23T15:24:38.133 に答える