lire le code de texmacs, j'ai vu ceci: qu'est-ce que cela signifie? p> Cette syntaxe est définie dans C Standard , P113, mais je n'ai pas trouvé le sens de celui-ci, Mais c'est parce que je ne sais pas comment lire les règles de la grammaire. p> parce que est-ce correct? p> p> concrete_tructeur code> est un autre struct code>, qui contient des fonctions ressemblant à un constructeur et à un Destructeur virtuel, et parce que je lisa ailleurs qui classes en C ++ sont en réalité struct code> avec des membres publics par défaut, je suppose que c'est la façon de faire de l'héritage avec struct code> in c ( Parce que c'est la norme C ...). p>
4 Réponses :
Êtes-vous sûr que c'est c? p>
Le document standard que vous avez associé ne décrit pas une telle syntaxe que je pouvais voir. P>
Ceci ressemble à C ++, où il est effectivement utilisé pour dire que la structure hérite une autre structure. page de compilation Texmacs vous recommande d'utiliser un compilateur C ++, qui ( Pour moi) implique que c'est écrit en C ++, pas c. p>
J'ai pris un look rapide dans l'archive Source Texmacs et j'ai vu beaucoup de fichiers ".CPP". P>
N'avez-vous pas regardé le C Spec que les références de l'affiche, il est tout à fait correct ... Je suis également déconcerté par ce que la spécification essaie de dire cependant.
@BenJ: J'avais bien regardé, et je ne suis pas d'accord, il n'est pas correct. Voir la réponse de 246TNT.
Il s'agit de la syntaxe C ++ et équivalente à ceci: Il s'agit de la syntaxe normale de l'héritage des classes, ici La norme C que vous avez liée à définir (6.7.2.1): p> Donc, selon C, il doit être Le ici Texmacs_input_rep code> est héritée de concret_tructeur < /code >.
struct code>, suivi d'un identificateur facultatif, suivi de { code>. Ou uniquement struct code> suivi d'un identificateur (une déclaration à terme). Dans aucun cas, il n'y a pas de place pour un supplémentaire: ... code> là-bas. P> : code> mentionné ultérieurement dans ce paragraphe de la norme est à peu près binaire -Field Larths, comme celui-ci; p> A code> et b code> ne sont que 4 et 3 bits de large, mais c'est syntaxe différente de celle de la question. p> p>
GCC ne l'aime pas (en mode C bien sûr).
et en regardant la spécification, je ne vois pas cela défini à la page 113 (6.7.2.1), il est indiqué: P> < Pré> xxx pré>
Quelle est la syntaxe des fitfields comme ceci: p> donc en résumé: ce n'est pas c, c'est c ++ et c'est héritier comme la classe héritage. p> p>
Le Il n'y a pas d'utilisation valide du : code> dans le texte de la norme ne fait pas partie de la construction C. Il est là pour séparer la chose définie et sa définition. P>
: code> dans une déclaration de structure. p>
Si cela ne concerne qu'un problème C, vous devez supprimer la balise C ++. En C ++ que la déclaration a raison.
Cette syntaxe n'est pas définie dans la norme C ... Êtes-vous sûr de savoir comment lire les règles de la grammaire?
Juste, j'ai lu trop vite et j'étais sceptique que c'était aussi ... et oui, je sais comment lire les règles de la grammaire.
Et j'ai toujours attribué la structure à être c, je ne savais pas qu'il a été étendu en C ++. C'est pourquoi je l'ai délibérément marqué C et C ++.