我有類似於下面的東西,這是我不太滿意:有沒有辦法編寫一個知道有多少次使用過另一個宏的宏?
#define BEGIN {
#define END_1 };
#define END_2 END_1 };
#define END_3 END_2 };
// ... (possibly more of these) ...
#define END(x) END_ ## x
int main()
{
BEGIN
BEGIN
BEGIN
END(3) // <- I don't want to pass the 3 here
BEGIN
BEGIN
END(2) // <- I don't want to pass the 2 here
}
而且我想重寫的BEGIN
和/或END
這樣的定義,後者並不需要採取一種說法。
我相信這是做不到的,但我對預處理器不是很有經驗。至少有什麼辦法比我發佈的例子更接近我的目標?
每次打電話給「BEGIN」時,都要打一個i ++,最後通過END(i)。只是一個建議。 – Abhineet
@Abhineet:我真的不明白你的建議:(你可以用一些編譯代碼顯示你的意思嗎? –
Wat,認真嗎?你正在使用宏...對於大括號...? – Puppy