Bir değişken bildirimde açılı ayraçları kapattıktan sonra boşluk koymazsak, C++ aşağıdaki hatayı atar.# ++ işaret makro genişletme davranışı C++
‘>>’ should be ‘> >’ within a nested template argument list
Ama bu kodda gibi #define
kullanırsanız hata gelmiyor. Birisi bunu bana açıklayabilir mi?
Sanırım #define
sadece bir makro genişletme ve bul-değiştir gibi çalışıyor, bu nedenle burada her ikisi de değişken bildirme yolları aynı olmalıdır.
Ayrıca, C++ 11 ile derlerseniz bu hata oluşmaz.
#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
int main(){
//Doesn't work, compile error
vector<vector<int>> v;
//Works
vector<vi> vv;
}
C++ 11 '' 'içinde, özel bir kural aracılığıyla geçerli oldu, çünkü alan gereksinimi böyle bir sıkıntıydı. –
Makro'nun neden çalıştığını bilmek ister misiniz? Burada bir soru görmedim. – Aitch
evet Makro'nun neden çalıştığını bilmek istiyorum – Jignesh