2012-03-12 13 views

Odpowiedz

5

Jest tak prawdopodobnie dlatego, że przyrostek L jest używany do stałych całkowitych. Wydaje się, że jest to przypadek ponownego użycia istniejącego sufiksu jako przedrostka. Inną odpowiedzią jest to, że jest to projekt stworzony przez komitet. Nie pytaj. Trzecia odpowiedź brzmi: jaki list lub inny mechanizm wybrałeś i czy możesz to uzasadnić zgodnie z konwencją L? Argumentuj za i przeciw.

Gorsze niż ponowne użycie L to ponowne użycie słów kluczowych, takich jak static i auto, o nowym znaczeniu. :)

Nawiasem mówiąc, jest to poruszone w uzasadnieniu ANSI C (z tyłu w 1989 r.). Nie wyjaśniają, dlaczego L został wybrany. Po prostu:

Przedrostek L odróżnia literały szerokich liter. Przyjęto przedrostek (w przeciwieństwie do przyrostka), aby tłumacz mógł na początku przetwarzania długich literałów wiedzieć, czy ma do czynienia ze zwykłymi, czy szerokimi znakami. (Patrz § 2.2.1.2.)

Sekcja 2.2.1.2 nie zawiera żadnych dodatkowych wskazówek.

+4

Przypuszczam, że litera "W" również byłaby oczywistym wyborem. –

+2

Przynajmniej C++ 11 dokonało rozsądnego wyboru 'U' dla ciągów Unicode. – dan04

+0

@ dan04: Użycie 'U' dla Unicode nie jest nowe w C++ 11, mieliśmy już' \ U' dla pojedynczych znaków Unicode. – MSalters

5

MSDN twierdzą, że stoi na ciąg Dosłowne, czyli wprowadzony ciąg nie powinny być tłumaczone na cokolwiek innego

+0

Również nie ma większego sensu ... widząc, jak _ "abc" _ jest literałem ciągłym; tylko 'char' zamiast' wchar_t' – pezcode

+0

Odpowiedź na podstawie MSDN o standardowym C++ dostaje cztery głosy? To jest pomieszane, LOL. – Kaz

Powiązane problemy