Re: [問題] 能不能用macro做到這件事
※ 引述《acrt3820 (晰晰)》之銘言:
: ※ 引述《loveflames (咕啾咕啾魔法陣)》之銘言:
: : 其實是為了嘗試不用template在編譯期算出1+...+10
: : 差在不能取之前定義的值
: 以下提供一種解法 不知道是否符合需求
: 可利用 __INCLUDE_LEVEL__ 這個macro 取得目前include深度
: 不過這個是 gnu c 的preprocessor限定
: 但其他的preprocessor可能也會有類似的東西可以用
有強者教我用加法器實作
C是次數
zzz用來判斷是否結束
x0~x7從1遞增到10
#undef懶得打
---------------------------------------------------
#ifndef zzz
#define C 10
#include <stdio.h>
#define sum0 0
#define sum1 0
#define sum2 0
#define sum3 0
#define sum4 0
#define sum5 0
#define sum6 0
#define sum7 0
#define x0 1
#define x1 0
#define x2 0
#define x3 0
#define x4 0
#define x5 0
#define x6 0
#define x7 0
#define y0 1
#define y1 0
#define y2 0
#define y3 0
#define y4 0
#define y5 0
#define y6 0
#define y7 0
#define sum sum0+sum1*2+sum2*4+sum3*8+sum4*16+sum5*32+sum6*64+sum7*128
#define zzz x0+x1*2+x2*4+x3*8+x4*16+x5*32+x6*64+x7*128
#endif
#if zzz>C
int main(){
printf("%d\n",sum);
return 0;
}
#endif
#if zzz<=C
#define ca 0
#if sum0+ca+x0==0
#define sum0 0
#define ca 0
#elif sum0+ca+x0==1
#define sum0 1
#define ca 0
#elif sum0+ca+x0==2
#define sum0 0
#define ca 1
#else
#define sum0 1
#define ca 1
#endif
#if sum1+ca+x1==0
#define sum1 0
#define ca 0
#elif sum1+ca+x1==1
#define sum1 1
#define ca 0
#elif sum1+ca+x1==2
#define sum1 0
#define ca 1
#else
#define sum1 1
#define ca 1
#endif
#if sum2+ca+x2==0
#define sum2 0
#define ca 0
#elif sum2+ca+x2==1
#define sum2 1
#define ca 0
#elif sum2+ca+x2==2
#define sum2 0
#define ca 1
#else
#define sum2 1
#define ca 1
#endif
#if sum3+ca+x3==0
#define sum3 0
#define ca 0
#elif sum3+ca+x3==1
#define sum3 1
#define ca 0
#elif sum3+ca+x3==2
#define sum3 0
#define ca 1
#else
#define sum3 1
#define ca 1
#endif
#if sum4+ca+x4==0
#define sum4 0
#define ca 0
#elif sum4+ca+x4==1
#define sum4 1
#define ca 0
#elif sum4+ca+x4==2
#define sum4 0
#define ca 1
#else
#define sum4 1
#define ca 1
#endif
#if sum5+ca+x5==0
#define sum5 0
#define ca 0
#elif sum5+ca+x5==1
#define sum5 1
#define ca 0
#elif sum5+ca+x5==2
#define sum5 0
#define ca 1
#else
#define sum5 1
#define ca 1
#endif
#if sum6+ca+x6==0
#define sum6 0
#define ca 0
#elif sum6+ca+x6==1
#define sum6 1
#define ca 0
#elif sum6+ca+x6==2
#define sum6 0
#define ca 1
#else
#define sum6 1
#define ca 1
#endif
#if sum7+ca+x7==0
#define sum7 0
#define ca 0
#elif sum7+ca+x7==1
#define sum7 1
#define ca 0
#elif sum7+ca+x7==2
#define sum7 0
#define ca 1
#else
#define sum7 1
#define ca 1
#endif
//----------------------
#define ca 0
#if x0+ca+y0==0
#define x0 0
#define ca 0
#elif x0+ca+y0==1
#define x0 1
#define ca 0
#elif x0+ca+y0==2
#define x0 0
#define ca 1
#else
#define x0 1
#define ca 1
#endif
#if x1+ca+y1==0
#define x1 0
#define ca 0
#elif x1+ca+y1==1
#define x1 1
#define ca 0
#elif x1+ca+y1==2
#define x1 0
#define ca 1
#else
#define x1 1
#define ca 1
#endif
#if x2+ca+y2==0
#define x2 0
#define ca 0
#elif x2+ca+y2==1
#define x2 1
#define ca 0
#elif x2+ca+y2==2
#define x2 0
#define ca 1
#else
#define x2 1
#define ca 1
#endif
#if x3+ca+y3==0
#define x3 0
#define ca 0
#elif x3+ca+y3==1
#define x3 1
#define ca 0
#elif x3+ca+y3==2
#define x3 0
#define ca 1
#else
#define x3 1
#define ca 1
#endif
#if x4+ca+y4==0
#define x4 0
#define ca 0
#elif x4+ca+y4==1
#define x4 1
#define ca 0
#elif x4+ca+y4==2
#define x4 0
#define ca 1
#else
#define x4 1
#define ca 1
#endif
#if x5+ca+y5==0
#define x5 0
#define ca 0
#elif x5+ca+y5==1
#define x5 1
#define ca 0
#elif x5+ca+y5==2
#define x5 0
#define ca 1
#else
#define x5 1
#define ca 1
#endif
#if x6+ca+y6==0
#define x6 0
#define ca 0
#elif x6+ca+y6==1
#define x6 1
#define ca 0
#elif x6+ca+y6==2
#define x6 0
#define ca 1
#else
#define x6 1
#define ca 1
#endif
#if x7+ca+y7==0
#define x7 0
#define ca 0
#elif x7+ca+y7==1
#define x7 1
#define ca 0
#elif x7+ca+y7==2
#define x7 0
#define ca 1
#else
#define x7 1
#define ca 1
#endif
#include __FILE__
#endif
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.226.149
→
05/18 09:48, , 1F
05/18 09:48, 1F
推
05/18 13:34, , 2F
05/18 13:34, 2F
→
05/18 13:57, , 3F
05/18 13:57, 3F
→
05/18 13:57, , 4F
05/18 13:57, 4F
推
05/18 13:58, , 5F
05/18 13:58, 5F
→
05/18 13:58, , 6F
05/18 13:58, 6F
推
05/18 14:36, , 7F
05/18 14:36, 7F
→
05/18 15:37, , 8F
05/18 15:37, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):