擴充套件C 與元程式設計(一)

2022-07-03 12:42:13 字數 2070 閱讀 5449

generated by the mw compiler

namespace hellomw.firstlook

public global::system.activities.outargumentturns

private global::system.activities.activity __getimplementation__()

));var __v__1 = new global::system.activities.statements.dowhile();

__v__1.condition = new global::metahwfuncactivity(__ctx__ => guess.get(__ctx__) != target.get(__ctx__));

));__v__2.activities.add(new global::metahwactionactivity(__ctx__ =>

));var __v__3 = new global::system.activities.statements.if();

__v__3.condition = new global::system.activities.inargument(new global::metahwfuncactivity(__ctx__ => guess.get(__ctx__) != target.get(__ctx__)));

var __v__4 = new global::system.activities.statements.if();

__v__4.condition = new global::system.activities.inargument(new global::metahwfuncactivity(__ctx__ => guess.get(__ctx__) < target.get(__ctx__)));

__v__4.then = new global::metahwactionactivity(__ctx__ =>

);__v__4.else = new global::metahwactionactivity(__ctx__ =>

);__v__3.then = __v__4;

__v__2.activities.add(__v__3);

__v__1.body = __v__2;

}__v__0.activities.add(__v__1);

__vroot__ = __v__0;

}return __vroot__;

}private global::system.func__implementation__;

protected override global::system.funcimplementation

set}

}public sealed class prompt : global::system.activities.activity

public global::system.activities.inargumenttext

private global::system.activities.activity __getimplementation__()

));__v__0.activities.add(new readint().initialize(__activity2__ =>

));__vroot__ = __v__0;

return __vroot__;

}private global::system.func__implementation__;

protected override global::system.funcimplementation

set}

}}

這就是元程式設計,把語法糖解糖的過程,即把高階抽象的描述翻譯成低階具體的實現。我覺得,「語法糖」是個膚淺的認識,實際上,多數的「語法糖」都涉及到語義,不僅僅是簡單的語法轉換。元程式設計的另乙個例子,早期某些c++編譯器能將c++**翻譯成等價的c**,即c++是門元程式語言,它是c的「語法糖」。

日光之下,並無新事。元程式設計是個非常「古老」的概念,但在每個「時代」它都能玩出耳目一新的花樣。

欲知後事如何,請聽下回分解。

C 之 模板元程式設計(一)

利用模板特化機制實現編譯期條件選擇結構,利用遞迴模板實現編譯期迴圈結構,模板元程式則由編譯器在編譯期解釋執行。模板是c 支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員或者成員函式的引數 返回值取得任意型別。模板是一種對型別進行引數化的工具 通常有兩種形...

PE結構擴充套件與元資料

net對pe結構的擴充套件主要體現在.text節上,儲存了msil 元資料 各種特殊的.net結構。text變樣後 輸入表 clr頭 msil 和可選的異常處理表 強名稱的hash資料 元資料 託管資源資料 可選 非託管資源資料 可選 執行時啟動資訊 clr頭 定義在sdk安裝目錄的corhdr.件...

c 模板元程式設計學習筆記(一)

習題 2 1.編寫乙個三元元函式replace type,它接受乙個任意復合型別c作為其第乙個引數,並將c中出現的type x替換為y typedef replace type type t1 int typedef replace type int const 10 int const,long ...