Co oznacza C @ t {++} na stronie podręcznika gdb?

16

Czytałem stronę podręcznika dla gdb i natknąłem się na linię:

You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.

C @ t {++} wygląda jak wyrażenie regularne, ale nie mogę go zdekodować.

Co to znaczy?

sam
źródło
dla której wersji? wygląda jak C ++ tylko oni bodged specjalnego kodowania ++jakoś
thrig
@thrig Mogę to potwierdzić w Ubuntu 16.04, gdb 7.11.1-0ubuntu1 ~ 16.5.
Melebius
Co sprawia, że ​​wygląda to na wyrażenie regularne?
Pozew Fund Moniki
FWIW, byłoby to nieprawidłowe wyrażenie regularne.
Lekkość ściga się z Moniką
Najwyraźniej zapomnieli, jak pisaćC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
tchrist

Odpowiedzi:

28

GNU nienawidzi stron podręcznika, więc zwykle piszą dokumentację w innym formacie i generują stronę podręcznika z tego, nie dbając o to, czy wynik jest użyteczny.

C@t{++}to niektóre znaczniki texinfo, które nie zostały przetłumaczone. Nie miał być częścią dokumentacji widocznej dla użytkownika. Powinien po prostu powiedzieć C++(ewentualnie ze specjalną czcionką, ++aby wyglądał ładnie).


źródło
8
W tym przypadku było dokładnie odwrotnie. Doco zostało pierwotnie napisane w roff w latach 80., a roff (źle) ręcznie przekonwertowany na texinfo w 2013 r.
JdeBP
6
Czy możemy dostać cytat za opinie w pierwszym zdaniu?
thosphor
3
@Kusalananda Dzięki za link / informacje. To źródło nie potwierdza jednak opinii zawartej w odpowiedzi.
fosfor
2
@thosphor „hate” to trochę przesada, ale jasne jest, że RMS i FSF nie uważają tego za preferowany format.
Barmar
18

Sekwencja @t{...}jest znacznikiem texinfo służącym do składania sekwencji przy użyciu czcionki o stałej szerokości ( więcej szczegółów i kilka przykładów znajduje się w sekcji Czcionki podręcznika texinfo).

Wygląda na to, że próbowali napisać „C ++”, a „++” używał czcionki o stałej szerokości (np. „ ++”.) Być może ktoś odkrył, że daje lepsze wyniki w przypadku określonych czcionek podczas renderowania dokumentacji w PostScript lub PDF lub w innym formacie, który domyślnie używa czcionek o zmiennej szerokości.

Powodem, dla którego wydaje się, że to nie działa i widzisz nieprzetworzoną sekwencję, jest to, że texinfo jest używany przez infosystem dokumentacji, podczas gdy manużywa nroff, który jest innym językiem z różnymi poleceniami (na przykład polecenie przełączenia na stałą szerokość czcionki w nroff to \f(CW), więc oczywiście nie rozpoznała @t{...}sekwencji bez zmian.

Wydaje się, że ten problem został wprowadzony w zatwierdzeniu z kwietnia 2013 r., W którym strony podręcznika zostały przekonwertowane na texinfo i wprowadzono ten specjalny znacznik. Wygląda na to, że skrypt używany teraz do generowania stron man ( texi2man.pl) nie rozpoznaje ani nie konwertuje poprawnie tej sekwencji.

filbranden
źródło
6
Ironią jest to, że pod2manzapewnia makro roff dla „ładniejszego C ++”, które nie jest używane, ponieważ jego kod rozpoznawania uruchamia się tylko dla ciągu „C ++”.
JdeBP
2
@JdeBP Wygląda na to, że masz tutaj odpowiedzi, więc dlaczego ich nie napiszesz?
rura
3
Współpraca, fajka. Komentarze do odpowiedzi sugerują ulepszenia odpowiedzi . Oto kilka ulepszeń. Zobaczmy, czy dwóch obecnych tutaj tłumaczy chce je włączyć. Jeśli nie, nie chcę nadepnąć na palce.
JdeBP
3
@JdeBP Dzięki za wezwanie. Przypominam sobie, że otrzymałem C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'rozszerzenie troff od labbie na Murray Hill podczas początkowej ewangelizacji języka C ++, kiedy składaliśmy postępowania USENIX dla tych wczesnych wydarzeń w C ++. Hobby bardzo poważnie traktowały ich troff. :)
tchrist