2014-07-28 8 views
2

Я использую Xcode 5.1 и наблюдаю странный синтаксис. Я добавил «\» в конце инструкции:В чем смысл добавления обратной косой черты в конце инструкции?

CGFloat x = 3.0;\ 

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

+0

Это просто символ продолжения линии. Не случайно ли это происходит в определении макроса? –

ответ

3

Поскольку исходный файл обрабатывается предварительной обработки, обратный слеш-новая строка просто удаляется, так что линия, как:

CGFloat x = 3.0;\ 
CGFloat y = 4.0; 

становится:

CGFloat x = 3.0;CGFloat y = 4.0; 

, которая до сих пор действует. Однако:

CGFloat x = 3.0;\\ 
CGFloat y = 4.0; 

который становится:

CGFloat x = 3.0;\ 
CGFloat y = 4.0; 

не будет действительным.

Просмотреть первый раздел в this pretty old looking text.

+0

Незначительный пункт, но .... В вашем последнем примере я думаю, что новая строка не будет удалена, если вы посмотрите на вывод препроцессора. –

+0

@PhillipMills Действительно; Благодарю. – Droppy

0

Вы «экранируете» новый символ строки (возврат), который находится в конце текстовой строки. Поскольку законно иметь несколько операторов в строке, это нормально. Если вы положите вторую косую черту в конце, вы вставляете в свой источник буквенный символ '\', и это неверный синтаксис.

Вы часто видите одиночный символ '\' в многострочных макросах на языках C, чтобы сделать их более читабельными.

Смежные вопросы