第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以有遞歸宏嗎?

我們可以有遞歸宏嗎?

C++ C
BIG陽 2019-09-21 11:19:19
我想知道我們是否可以在C / C ++中使用遞歸宏?如果是,請?zhí)峁┦纠纠?。第二件事:為什么我無法執(zhí)行以下代碼?我在做什么錯?是因為遞歸宏嗎?# define pr(n) ((n==1)? 1 : pr(n-1))void main (){    int a=5;    cout<<"result: "<< pr(5) <<endl;    getch();}
查看完整描述

3 回答

?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

您的編譯器可能提供了僅預處理而不實際編譯的選項。如果您要在宏中查找問題,這將很有用。例如使用g++ -E:


> g++ -E recursiveMacro.c


# 1 "recursiveMacro.c"

# 1 "<built-in>"

# 1 "<command line>"

# 1 "recursiveMacro.c"


void main ()

{

    int a=5;

    cout<<"result: "<< ((5==1)? 1 : pr(5 -1)) <<endl;

    getch();

}

如您所見,它不是遞歸的。pr(x)在預處理期間僅被替換一次。要記住的重要一點是,預處理器所做的全部工作就是盲目地將一個文本字符串替換為另一個文本字符串,而實際上并沒有計算類似的表達式(x == 1)。


您的代碼無法編譯的原因pr(5 -1)是沒有被預處理器替換,因此它最終作為對未定義函數(shù)的調(diào)用而出現(xiàn)在源代碼中。


查看完整回答
反對 回復 2019-09-21
  • 3 回答
  • 0 關注
  • 888 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號