Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > расширение C# дополнительным keyword


Автор: marcusmae 23.1.2007, 22:47
Всем привет  smile 

Допустим, у меня есть код некоторой библиотеки классов, потенциально способный компилироваться как в последовательный вариант, так и в параллельный - на кластере. В чём это выражается? = Код написан на C#, но с некоторыми расширениями языка, например, для методов введено ключевое слово movable :

Цитата

public movable double GetSolution(...)
{...}


В связи с этим вопрос : как заставить стандартный 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
Если стоял вопрос об обеспечении совместимости со стандартным компилятором, то такие вещи, наверное, лучше было бы сделать с помощью атрибутов.
В таком виде без сторонних средств препроцессинга никак.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)