Перенос длинных строк в C

Статус: Offline
Реєстрація: 23.09.2008
Повідом.: 849
Перенос длинных строк в C

Как ни странно на С пишу давно, а проблема встретилась мне только сейчас .
В общем есть у меня объект String и я его инициализирую внутри кода:
NSString *a = *" какая то строка";
Так вот - строка эта очень длинная при переносе ее на следующую строку, компилятор перестает ее понимать. Я предполагаю что нужно дописывать в строку какие то специальные символы, но я не знаю какие, гугл не помог.
Откликнитесь кто знает, очень уж неудобны будут макароны в коде:confused:
 
aa = "sdfasdgfadfg \
sfgsdfg asdfg"

.
 
может обратный слэш в конец строки?

CRNBS опередил :)
 
Да, помогло :-) , но появились предупреждения типа
warning: backslash-newline at end of file
это нормально?
 
неправильно

надо вот так:

NString *str = new NString("абра кадабра абра кадабра "
" абра кадабра абра "
"кадабра");

насколько я помню (года 4 на си не писал :)), в си две строки в кавычках конкатенируются препроцессором, т.е. это будет одна и та-же строка:
- "абра кадабра"
- "абра" " " "кадабра"

в С# такого нет

а если надо в макросе (чтобы все в одну строку препроцессором вытянулось, т.к. макрос в одной строке должен быть), тогда так:

#define ABRA_KADABRA_STR "абра кадабра абра "\
"кадабра абра кадабра "\
"абра кадабра"
 
Попробовал как сказал Klez - результат тот же.
Предупреждения есть - но все работает корректно.
У меня как раз директива препроцессора.
Среда - Objective C (забыл сказать)
 
Предупреждения есть - но все работает корректно.
У меня как раз директива препроцессора.

напиши на какой кусок кода ругается (раз с макросом, то приведи определение макроса и как его используешь) и какое предупреждение, без этого что либо сказать сложно - гадание на кофейной гуще
 
#define CSSFile *""\
"\nbody{\n"\
"background-color: %*;\n"\
"}\n"\
"h1{\n"\
"color: %*;\n"\
"}\n"\
"p {\n"\
"font-size: %d;\n"\
"}"

Это код в отдельном h. файле. Ворнинги появляются во всех .m (cpp) файлах, которые прямо или косвенно импортируют этот файл прямо после директивы #import. Когда пишу все в одну строку - ворнингов нет. Когда вызываю #define в одном из существующих .h файлов - тоже все нормально.

PS звездочки - собачки
 
Все - понял, просто нужно было после последней строки ентер сделать походу

Я ж писал - звездочки - собачки. Их форум заменяет
 
Я ж писал - звездочки - собачки. Их форум заменяет

собак в нормальном си нету, это какое-то расширение твоего компилятора, что оно значит и как может влиять подсказать не могу, т.к. с Objective C не сталкивался. Я бы старался писать код так чтобы было легче потом на чистый си перевести, тем более что, как подсказывает гугль, Objective C полностью с ним совместим
 
В общем спасибо всем за обратный слэш.
С ворнингами все решилось просто нажатием на энтер после последних кавычек .
 
собак в нормальном си нету, это какое-то расширение твоего компилятора, что оно значит и как может влиять подсказать не могу, т.к. с Objective C не сталкивался. Я бы старался писать код так чтобы было легче потом на чистый си перевести, тем более что, как подсказывает гугль, Objective C полностью с ним совместим

raw strings?
хм, тогда по идее у него ньюлайны не должны работать...
 
raw strings?
хм, тогда по идее у него ньюлайны не должны работать...

это в C# так... :)

Бегло просмотрев что такое Objective C, я думаю собакой начинаются конструкции специфичные для Objective C, скорее всего строка начинающаяся с собаки в ObjectiveC - это не char*, а какойто специфичный для ObjectiveC тип, NString или что то типа того...
 
Назад
Зверху Знизу