看板 C_and_CPP 關於我們 聯絡資訊
#include <iostream> using namespace std; #define max 6 #define a(b) A(b) #define A(b) a##b int m[10]; int a1=11,a2=12,a3=13,a4=14,a5=15,a6=16; template<int n> struct test { static void p(){ test<n-1>::p(); m[n]=*(&a(max)-(max-n));//這行執行時的結果可能會出錯 } }; template<> struct test<1> { static void p(){ m[1]=a1; } }; int main() { test<max>::p(); for(int i=1;i<=max;i++) cout<<"m["<<i<<"]="<<m[i]<<endl; return 0; } ----------------------------- 因為不知怎麼用template來產生a1~an這些名字 所以只好這樣寫 可是開最佳化後global變數就不是照順序放 紅色那行可能會有問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.226.149
loveme00835:模板不算是前處理吧? 05/27 04:00
loveflames:原文說編譯時就將變數代入,應該有符合需求吧?? 05/27 12:04
loveflames:17926的方法應該能做到,但是這樣不如直接寫m[1]=a1 ~ 05/27 12:08
loveflames:m[n]=an 05/27 12:08