5
這裏是我的代碼:爲什麼C++/CLI編譯器會如此輕鬆地使用符號混淆?
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
namespace Tests {
ref class MyCollection : public IEnumerable<int> <----HERE!
C#編譯器,例如,將認識到,擁有國內唯一的IEnumerable<T>
這些命名空間是System::Collections::Generic
。爲什麼C++/CLI編譯器不能做到這一點?除非我輸入它的全名或至少Generic::IEnumerable<int>
,否則它將不會識別它並將觸發C2872錯誤:模棱兩可的符號。
我在這裏錯過了什麼嗎?
呃,一個是通用的,另一個不是?不應該很難選擇使用哪一個,此外,c#編譯器不會被它所迷惑。 –
編譯器如何預先知道它應該選擇通用版本?它還沒有解析'',即使是這樣,它首先需要確定'<'是泛型類型的開始,而不是'少於'運算符。它仍然需要正確解析C++,所以它們不能隨意更改它解析代碼的方式。 –
jalf
C#和C++語言是不同的,因此以不同的方式解析代碼 – Mark