2013年11月4日月曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の10章(Cプリプロセッサ)、10.2(条件付きコンパイル)、10.3(インクルードファイル)、10.4(パラメータをとるマクロ)、設問 10-5を解いてみる。

その他参考書籍

設問 10-5.

#define 文で引数に括弧がないために、

SQR(counter + 1 * counter + 1)

と展開される。よって設問の10-8のプログラムの出力結果は、

x 1, x squared 1
x 2, x squared 3
x 3, x squared 5
x 4, x squared 7
x 5, x squared 9

となる。

確認。

コード

sample.c

#include <stdio.h>
#define SQR(x) (x * x)

int main()
{
    int counter;
    
    for (counter = 0; counter < 5; ++counter){
        printf("x %d, x squared %d\n", counter + 1, SQR(counter + 1));
    }
}

makefile

CC=cc
CFLAGS=-g

sample: sample.c
 $(CC) $(CFLAGS) -o sample sample.c

clean:
 rm -f sample

入出力結果(Terminal)

$ make
cc -g -o sample sample.c
$ ./sample
x 1, x squared 1
x 2, x squared 3
x 3, x squared 5
x 4, x squared 7
x 5, x squared 9
$

意図したsquaredの出力結果になるように修正。

コード

sample.c

#include <stdio.h>
#define SQR(x) ((x) * (x))

int main()
{
    int counter;
    
    for (counter = 0; counter < 5; ++counter){
        printf("x %d, x squared %d\n", counter + 1, SQR(counter + 1));
    }
}

入出力結果(Terminal)

$ make
cc -g -o sample sample.c
$ ./sample
x 1, x squared 1
x 2, x squared 4
x 3, x squared 9
x 4, x squared 16
x 5, x squared 25
$

0 コメント:

コメントを投稿