valに代入した値は使われていない とは・・・
Posted: 2010年5月27日(木) 18:56
こんばんは、質問させていただきます。
下記のソースをコンパイルしたところ、
valに代入した値は使われていない とメッセージが出ます。
どのようにしたら動作するでしょうか。
#include <stdio.h>
#include <time.h>
#define LOOP_LIMIT 10000
#ifdef USE_MACRO
#define MAX( a, b ) ((a) > (b) ? (a) : (b))
#else
double maxfunc( double a, double b);
#endif
int main( void )
{
int i, j;
double val, x, y;
clock_t stime, etime;
stime = clock();
for ( i = 0; i < LOOP_LIMIT; i++ )
{
for ( j = 0; j < LOOP_LIMIT; j++ )
{
x = i * 1.0;
y = j * 2.0;
#ifdef USE_MACRO
val = MAX( x, y );
#else
val = maxfunc( x, y );
#endif
}
}
etime = clock();
#ifdef USE_MACRO
printf( "MACRO version : time = %g\n", (double) (etime - stime) / CLOCKS_PER_SEC );
#else
printf( "FUNCTION version : time = %g\n", (double ) (etime - stime) / CLOCKS_PER_SEC );
#endif
return 0;
}
#ifndef USE_MACRO
double maxfunc( double a, double b )
{
return a < b ? a : b;
}
#endif
下記のソースをコンパイルしたところ、
valに代入した値は使われていない とメッセージが出ます。
どのようにしたら動作するでしょうか。
#include <stdio.h>
#include <time.h>
#define LOOP_LIMIT 10000
#ifdef USE_MACRO
#define MAX( a, b ) ((a) > (b) ? (a) : (b))
#else
double maxfunc( double a, double b);
#endif
int main( void )
{
int i, j;
double val, x, y;
clock_t stime, etime;
stime = clock();
for ( i = 0; i < LOOP_LIMIT; i++ )
{
for ( j = 0; j < LOOP_LIMIT; j++ )
{
x = i * 1.0;
y = j * 2.0;
#ifdef USE_MACRO
val = MAX( x, y );
#else
val = maxfunc( x, y );
#endif
}
}
etime = clock();
#ifdef USE_MACRO
printf( "MACRO version : time = %g\n", (double) (etime - stime) / CLOCKS_PER_SEC );
#else
printf( "FUNCTION version : time = %g\n", (double ) (etime - stime) / CLOCKS_PER_SEC );
#endif
return 0;
}
#ifndef USE_MACRO
double maxfunc( double a, double b )
{
return a < b ? a : b;
}
#endif