Здравствуйте, MShura, Вы писали:
...
MS>Приведенное решение упрощало работу с длинными запись
MS>MS>f( "VeryLongVeryLongVeryLongVeryLongVeryLongVeryLongString", sizeof("VeryLongVeryLongVeryLongVeryLongVeryLongVeryLongString")-1 );
MS>
MS>до такой
MS>MS>#define STR_HELLO "VeryLongVeryLongVeryLongVeryLongVeryLongVeryLongString"
MS>f( STR_HELLO, sizeof(STR_HELLO)-1 );
MS>
MS>По сгенеренному коду два примера будут одинаковые
MS>Никакого лишнего overhead'а ни при каких опциях компиляции.
Даже если там будет короткая строка, то второй подход предпочтительней, чтобы избежать f("hello",sizeof("helo")) или чего-то в этом роде.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, LelicDsp, Вы писали:
L>>>Хм, как насчет того, что дублируются строки? А если они длинные?
LD>Нефига они не дублируются, sizeof() вычисляется на этапе компиляции, это не вызов функции.
Вы о чем? Кто с этим спорит?
MS>>#define STR_HELLO "Hello"
LD>После обработки препроцессором это даст тотже самый sizeof("Hello")
Что Вы хотели этим сказать

и к чему?
Здравствуйте, lifrsdn,
__>>__>>static char const my_array[] = "aa"; //No Copy
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth