Техника оптимизации под линуха

       

не оптимизированный кандидат в объединение констант


Компилятор vc "честно" генерирует все три строковые константы, а gcc и icl только две из них: "hello,world!\n"

и "i say hello, world!\n". На то, что первая строка совпадает с концом второй, ни один из компиляторов не обратил внимание. Это тем более печально, что язык Си не позволяет управлять размещением переменных в памяти и классический ассемблерный трюк с передачей указателя на середину строки здесь не проходит. Можно, конечно, поднатужиться и написать:

       s[]="i say hello, world!\n";             // размещаем

строку в

памяти

       printf(&s[6]);
                           // выводим подстроку

       printf(&s[6]);
                           // выводим подстроку

       printf(s);
                        // выводим всю строку целиком



Содержание раздела