C Programming——對於#define 的迷思


#define,以我的知識來判斷,就是用來定義Constant(Symbolic Constant) 的,像以下例子:

#include <stdio.h>
#define ive 1;
int dummy (int tmp);
main()
{
 int i;
 i = ive;
printf("The man: %d Ive\n", dummy(ive));
}

int dummy (int tmp)
{
 return (tmp);
}

細節……

如果(綠色的)ive放在 printf 裡,結果Compiler 就會出現 error: expected ‘)’ before ‘;’ token

(@ the line of printf(“The man: %d Ive\n", dummy(ive));)

如果我把(綠色的)ive變成 i,也就是

printf("The man: %d Ive\n", dummy(i));

就可以相安無事的Compile 和 Run。

即使是牽涉到 ive (Symbolic constant)的任何Statement,都會出現這一樣的error。

原來……

#define ive 1;

我錯誤的吧#define 的Statement 加上了 “;" (Semi-colon)

迷思……

  1. 為什麼Error 時出現在用到它(ive)的Statement,而不是一開頭(#define statement)就出現?
  2. 為什麼Error 連一點有關於 錯誤在#define Statement 加上了 “;" 的字眼也沒有?
  3. 為什麼當我用其他Variable 來承載 ive 的value有沒問題呢?(問題是出自#define,但 ive 的value 又可以 define?)

塗牆

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s