Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
C2x: 6.9.2 Definiciones de objetos externos: ¿por qué se coloca "no será un tipo incompleto" en Semántica en lugar de Restricciones?

Pregunta de seguimiento para: ¿Cuál es el fundamento de "la violación de la semántica no requiere diagnóstico"? .

Borrador de trabajo N2596 — 11 de diciembre de 2020 ISO/IEC 9899:202x (E), 6.9.2 Definiciones de objetos externos, Semántica, 3:

Si la declaración de un identificador de un objeto es una definición provisional y tiene un vínculo interno, el tipo declarado no será un tipo incompleto.

Esto parece una restricción: ¿por qué se coloca en la sección "Semántica" (una violación del requisito no requiere un diagnóstico) en lugar de en la sección "Restricciones"?

UPD. Pregunta similar: comprensión de IEEE 754: ¿por qué convertFromInt y convertToIntegerXXX se clasifican como operaciones aritméticas y no como operaciones de conversión? .

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Esto parece una restricción

Estoy de acuerdo.

— ¿Por qué se coloca en la sección "Semántica" (una violación del requisito no requiere un diagnóstico) en lugar de en la sección "Restricciones"?

Con respecto al paréntesis, no considero que la cuestión de si se requiere un diagnóstico sea una distinción clave entre una restricción del lenguaje y una regla semántica. Una restricción es una

Restricción, ya sea sintáctica o semántica, mediante la cual debe interpretarse la exposición de los elementos del lenguaje.

(C17, 3.8/1)

Eso es un bocado, sin duda, pero se trata de restricciones que son reglas sobre qué código que coincide con la gramática léxica de C se ajusta en general a la especificación del lenguaje, y qué no. Como consecuencia, el cumplimiento de la restricción de idioma siempre se puede evaluar en el momento de la traducción, y el código que no cumple con una restricción de idioma de manera efectiva no se expresa en C. Es decir, las restricciones son reglas que se aplican al código fuente. Este es el contexto para el requisito de que las implementaciones diagnostiquen violaciones de restricciones.

Las reglas semánticas, por otro lado, explican qué significa el código C o qué comportamiento del programa está asociado, si lo hay. Estas son reglas para el comportamiento en tiempo de ejecución de los programas y las implementaciones del lenguaje C.

Lo cual es un largo camino de regreso a: Estoy de acuerdo, a pesar de estar incluido entre las reglas semánticas, el párrafo 6.9.2/3 es por naturaleza una restricción de idioma.

Dudo que alguien pueda responder con autoridad sobre por qué se coloca entre las reglas semánticas, pero tal vez sea relevante aquí que exactamente la misma redacción aparece como regla semántica en todas las versiones publicadas de la especificación del idioma, hasta el final. a C89, que posicionó "tipos incompletos" de manera un poco diferente a C11 y posteriores.

Puede ser que el comité original de ANSI C se haya tomado la libertad aquí para excusar a los compiladores de diagnosticar este problema, quizás porque vieron una ambigüedad sobre si esa restricción debería aplicarse a los tipos incompletos que se completan más adelante en la unidad de traducción. No estoy seguro de eso yo mismo, hoy. Es muy posible que esto representara una posición de compromiso.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda