電子書籍の厳選無料作品が豊富!

現在タイムスタンプを出力するためのC言語のソースコードを
実行したいと思っています。
下記URLを参考にしています。
http://www.02.246.ne.jp/~torutk/cxx/clock/cpucou …

下記がそのソースコードなのですがエラーが出て実行できません。
どのようにすれば改善できるかC言語に詳しい方教えてくださらないでしょうか?

※OSはLinuxです。





Cファイル
ーーーーーーーーーーーーーーーーーーーーーー
#include "rdtsc.h"
#include <stdio.h>

int measure_func()
{
unsigned long long start = rdtsc();
to_be_measured();
unsigned long long stop = rdtsc();
printf("measured time : %I64d [clock]\n", stop - start);

return 0;
}



ヘッダーファイル
ーーーーーーーーーーーーーーーーーーーーーー
#ifndef RDTSC_H_
#define RDTSC_H_

inline unsigned long long rdtsc() {
unsigned long long ret;
__asm__ volatile ("rdtsc" : "=A" (ret));
return ret;
}

#endif /* RDTSC_H_ */



エラーメッセージ
ーーーーーーーーーーーーーーーーーーーーーー
201> gcc tsc.c
tsc.c: In function ‘measure_func’:
tsc.c:7:5: warning: implicit declaration of function ‘to_be_measured’ [-Wimplicit-function-declaration]
to_be_measured();
^
tsc.c:9:12: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long long unsigned int’ [-Wformat=]
printf("measured time : %I64d [clock]\n", stop - start);
^
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: 関数 `_start' 内:
(.text+0x20): `main' に対する定義されていない参照です
/tmp/ccPCXlFN.o: 関数 `measure_func' 内:
tsc.c:(.text+0xe): `rdtsc' に対する定義されていない参照です
tsc.c:(.text+0x1c): `to_be_measured' に対する定義されていない参照です
tsc.c:(.text+0x26): `rdtsc' に対する定義されていない参照です
collect2: error: ld returned 1 exit status

A 回答 (1件)

①実行の最初の部分としてのmain() 関数がありませんので実行できません。


今は、関数だけがあるような状態です。
main()関数は必須ってこと。

②とりあえず。
#include "rdtsc.h"
#include <stdio.h>
は。
#include <stdio.h>
#include <rdtsc.h>
と綺麗に書いて並び替えましょう。

③その他、エラーとワーニングの違いですが、ワーニングはエラーではないこと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!