O que C @ t {++} significa na página do manual gdb?


16

Eu estava lendo a página de manual do gdb e me deparei com a linha:

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

O C @ t {++} parece um regex, mas não consigo decodificá-lo.

O que isso significa?


para qual versão? olhares como C ++ só eles bodged a codificação especial de ++alguma forma
thrig

@thrig Posso confirmar isso no Ubuntu 16.04, gdb 7.11.1-0ubuntu1 ~ 16.5.
Melebius

O que faz isso parecer uma regex para você?
Fund Monica's Lawsuit

FWIW, isso seria uma regex inválida.
Lightness Races com Monica

Claramente eles esqueceram como escreverC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
tchrist

Respostas:


28

O GNU odeia páginas de manual, então elas geralmente escrevem documentação em outro formato e geram uma página de manual a partir dela, sem realmente se preocupar se o resultado é utilizável.

C@t{++}é alguma marcação texinfo que não foi traduzida. Não era para ser parte da documentação visível ao usuário. Deveria simplesmente dizer C++(possivelmente com uma fonte especial ++para fazer com que pareça agradável).


8
Nesse caso, foi exatamente o contrário. O doco foi originalmente escrito em roff na década de 1980 e a ROFF (mal) mão-convertido em texinfo em 2013.
JdeBP

6
Podemos obter alguma citação para as opiniões na primeira frase?
thosphor


3
@Kusalananda Obrigado pelo link / informações. Essa fonte não suporta a opinião na resposta.
thosphor

2
@thosphor "hate" é um exagero, mas é claro que o RMS e a FSF não o consideram o formato preferido.
Barmar

18

A sequência @t{...}é a marcação texinfo para digitar uma sequência usando fonte de largura fixa (consulte Fontes seção do manual texinfo para obter mais detalhes e alguns exemplos.)

Parece que eles estavam tentando escrever "C ++" e o "++" usa uma fonte de largura fixa (como " ++".) Talvez alguém tenha encontrado que produz melhores resultados com fontes específicas ao renderizar documentação em PostScript ou PDF ou em algum formato que usa fontes de largura variável por padrão.

A razão pela qual isso não parece funcionar e você está vendo a sequência não processada é que o texinfo é usado pelo infosistema de documentação, enquanto manusa o nroff, que é uma linguagem diferente com comandos diferentes (por exemplo, o comando para alternar para uma constante fonte width em nroff é \f(CW), então é claro que não reconheceu a @t{...}sequência inalterada.

Esse problema parece ter sido introduzido em um commit a partir de abril de 2013, onde as páginas de manual foram convertidas em texinfo e essa marcação específica foi introduzida. Parece que o script agora usado para gerar as páginas de manual ( texi2man.pl) não reconhece ou converte adequadamente essa sequência.



6
A ironia é que pod2manfornece uma macro roff para "um C ++ mais agradável" que não é usado porque seu código de reconhecimento apenas entra em ação na string "C ++".
JdeBP # 18/18

2
@JdeBP Você parece ter as respostas aqui, por que não escreve uma?
pipe

3
Colaboração, cano. Os comentários das respostas são para sugerir melhorias nas respostas . Aqui estão algumas melhorias. Vamos ver se os dois respondentes aqui desejam incorporá-los. Eu quero não pisar na ponta dos pés, se o fizerem.
JdeBP # 18/18

3
@JdeBP Obrigado pela chamada. Lembro-me de que recebi a C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'expansão do troff de um laboratório em Murray Hill durante o evangelismo inicial da linguagem C ++ quando estávamos digitando os procedimentos do USENIX para esses primeiros eventos em C ++. Os labbies foram muito sérios sobre seu troff. :)
tchrist
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.