読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

#defineの使いかた

c

id:qnighyにいろいろ教えてもらったので。それをそのままメモる。

#include <stdio.h>

#define square(E) E*E

int main(int argc,char* argv[]) {
	printf("#define square(E) E*E\n\n");
	printf("square(10)==%d\n",square(10));
	printf("square(100)==%d\n",square(100));
	printf("square(1+10)==%d\n",square(1+10));
	printf("square(5+5)==%d\n",square(5+5));
	return 0;
}

だと、square(1+10)とかが1+10*1+10に展開されちゃって駄目で、
#defineは、

#define square(E) ((E)*(E))

にすればいい。
んで、こういうのはバグの元なのであんま使わないほうがいい。