Pull to refresh
19
0
Airog @Airog

User

Send message
Если поведение системы при такой постановке задачи не прогнозируемо, то лучше поменять постановку задачи, чтобы достигнут 100% конечной цели. Это намного лучше чем искать решение, которое может сработать, а может и нет, а также может спровацировать трудно уловимый баг.
В таких случаях нужно не гадать на кофейной гуще, а менять постановку задачи чтобы была 100% гарантия правильности исполнения.
Этот код работает, проверено. Для большей убедительности можно в конструкторе использовать элементы которые инициализуруются статическим конструктором.
Вот что придумал за 5 минут:

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("before static ctor");
            C c = new C();
            Console.WriteLine("after static ctor");
        }
    }

    class C
    {
        static C()
        {
            Console.WriteLine("from static ctor");
        }

        public C()
        {
        }
    }
}

т. е. создаю и вызываю обычный конструктор, что автоматом вызывает статический
А некоторые просто не верят в магию и продолжают делать свое дело )
Кого-то вирус заставляет деньги платить, а кого-то в сторонке хихкать )
А что же делают пользователи линукс?
Прикольно, было бы интересно узнать как оно работает
Все зависит от компилятора и длины исходного кода, но в большинстве случаев всегда будет compile-time, но если код слишком большой (как в примере кодирования строк, а у меня в реальном проекте он раза в два больше), то иногда надо увеличить в параметрах длину инлайн функций, как мне пришлось сделать в gcc, а OpenWatcom все чудесно проглотил без проблем
Я не считаю макросы фуфлом, просто они, как вы сказали, слабее шаблонов, я еще добавлю — намного слабее. Да и выглядят макросы не совсем хорошо по сравнением с шаблонами. Сейчас попробовал с помощью макросов сделать вычисление хэша, не получилось, мало того, код выглядит намного ужасней и непонятней. Попробуйте сами хотя бы для 4-х символов и при этом учтите, что может передаваться строка меньшего размера.
Дело в том что наврядли с помощью макросов можно сделать такие вычисления во время компиляции (макросы это ведь подстановки, а шаблоны это уже вычисления). Интересно как можно с помощью макросов определить конец строки? Причем так чтобы дальше не было вычислений.
Макросами не будет красиво и наврядли с помощью них такое возможно сделать. Да и макросы являются наследием С, и для С++ с его шаблонами их не рекомендуют применять. Хотя я может чего-то не знаю, если вы считаете что макросами можно такое сделать, то приведите пример.
С новым стандартом пока сильно не разбирался, но когда уже окончательно утвердять и появится его полная поддержка, то буду копать. Есть еще много задач которые хотелось бы решать с помощью шаблонов.
А где вы там увидели run-time? Конечный результат будет в виде одного числа, т. е. чистый compile-time.
Ну про первый раз с шаблонами вы явно загнули, я с ними работаю с момента их появления на С++. А насчет дизасма, вы не совсем поняли, цель была в формировании хэшей во время компиляции, естественно никаких шаблонов в результирующем exe не будет, будут только хеши для сравнения и больше ничего не требовалось. Также и со строками, будет только кодированный текст сформированный самим компилятором.
Такое тоже имеет право на жизнь и я об этом знаю, вопрос в том сколько разрядов поместится? В вашем примере малавато будет, в моем примере намного больше, хотя и выглядит похуже, но цель была не в этом
Неправильно помните )
Согласен с вами, но иногда хочется чего-то необычного…
Никому не нужно будет сопровождать, так как проект личный и делался в целях самообразования и поиска нестандартных решений. Так же хотелось прощупать возможности кимпилеров по оптимизации.
Прочти ниже, я не против воли народа, я против последствий, посмотрите что случилось с Украиной после оранжевой революции, сейчас пришел тот против кого протестовали, и сейчас опять полная жопа. Революционеры управляемые англосаксами довели страну до ручки. Посмотрите на Беларуссию и Россию, где там учитывается воля народа? Там ее в корне подавляют.

Information

Rating
Does not participate
Registered
Activity