Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > расширение C# дополнительным keyword |
Автор: marcusmae 23.1.2007, 22:47 | ||
Всем привет ![]() Допустим, у меня есть код некоторой библиотеки классов, потенциально способный компилироваться как в последовательный вариант, так и в параллельный - на кластере. В чём это выражается? = Код написан на C#, но с некоторыми расширениями языка, например, для методов введено ключевое слово movable :
В связи с этим вопрос : как заставить стандартный C#-овый компилятор не обращать внимания на такие нововведения? = Понятно, что это можно сделать с помощью макросов, каких-нить ConditionalAttribute и тп. Но, всё же, какой наиболее гибкий способ Вы бы предложили? |
Автор: Djuffin 24.1.2007, 10:23 |
Стандартный думаю никак. НО! Можно взять исходники какого-нибудь из не совсем стандартных компиляторов и немного поправить. Исходники можно взять здесь 1. MS Shared Source (тут реализация компилятора на C++) http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&displaylang=en 2. Mono (а тут на C#) http://www.mono-project.com/Downloads |
Автор: mr.DUDA 24.1.2007, 10:43 |
Может R# тут подойдёт ? http://www.rsdn.ru/projects/rsharp/article/rsharp_mag.xml |
Автор: marcusmae 25.1.2007, 19:19 |
Хм, спасибо за любопытные статьи, но менять компилятор не хотелось бы. Как раз наоборот : код должен остаться совместимым со стандартным C#. Ведь никакой дополнительной функциональности от компилятора не требуется, кроме как не видеть некоторые модификаторы. Видимо, придётся изобретать хитрые макросы. |
Автор: mr.DUDA 25.1.2007, 21:01 |
А вот макросов в шарпе и нету, в обычном понимании этого слова. То есть имеются, конечно, директивы прекомпиляции. Но они ограничиваются простым типа #define и проверить #if; подстановочных макросов же нет. |
Автор: Void 25.1.2007, 22:04 |
Если стоял вопрос об обеспечении совместимости со стандартным компилятором, то такие вещи, наверное, лучше было бы сделать с помощью атрибутов. В таком виде без сторонних средств препроцессинга никак. |