1. Si al utilizar funciones de la biblioteca
matemática no incluye el archivo de encabezado matemático, se
producirá un error de sintaxis. Por cada función de la
biblioteca estándar que utilice en un programa, debe
indicar un archivo de encabezado estándar.
2. La omisión de la clase de valor devuelto de una
definición de función es un error de sintaxis si el prototipo
especifica una clase devuelto distinto de int.
3. No devolver un valor desde una función que supuestamente
debe hacerlo es un error de sintaxis.
4. La devolución de un valor desde una función cuya
clase de devolución se ha declarado como void es un error
de sintaxis.
5. La declaración de parámetros de función de la misma
clase como float x, y, en lugar de float x, float y, causará
un error de compilación debido a que para cada
parámetro de la lista de parámetros se requiera una clase de
datos.
6. Un punto y coma después del paréntesis derecho de
la lista de parámetros de una definición de función es un
error de sintaxis.
7. Volver a definir un parámetro de función como
variable local en la función es un error de sintaxis.
8. El ( ) de una llamada de función de hecho es un
operador de C++. Provoca que se invoque a la función. Omitir
el () de una llamada de función que no tiene
argumentos no es un error de sintaxis. Sin embargo si pretendía
que se llamara a la función, esto no sucederá.
9. Definir una función dentro de otra es un error de
sintaxis.
10. Sucede un error de sintaxis si el prototipo de
función, el encabezado de la función y las llamadas de la función
no coinciden en el número, clase de datos y orden de
los argumentos y parámetros, así como en el tipo de valor
devuelto.
11. La omisión del punto y coma al final de un
prototipo de función es un error de sintaxis.
12. Las llamadas de función que no sean iguales a su
prototipo provocan errores de sintaxis.
13. Cuando el prototipo de función y la definición de
la función no son iguales, sucede un error de sintaxis.
14. La conversión de una clase de datos más alto en la
jerarquía de promoción a un tipo menor puede cambiar su
valor.
15. Omitir el prototipo de una función cuando esta no
ha sido definida antes de ser llamada por primera vez es un
error de sintaxis.
16. El intento por generar números aleatorios con
srand() en lugar de rand() es un error de sintaxis, debido a que
la función srand() no devuelve un valor.
17. Asignarle el equivalente entero de una constante
de enumeración a una variable del tipo de la enumeración es
un error de sintaxis.
18. Si después de definir una constante de enumeración
intenta asignarle otro valor, provocará un error de sintaxis.
19. Indicar varios especificadores de clase de
almacenamiento para un identificador es un error de sintaxis. Sólo se
le puede aplicar un especificador de clase de
almacenamiento a un identificador. Por ejemplo, si incluye
register, no incluya también auto.
20. Por lo general es un error de lógica utilizar el
mismo nombre para un identificador dentro de un bloque interno
que para un identificador que es parte de un bloque
externo cuando, de hecho, el programador quiere que el
identificador del bloque externo esté activo en el
bloque interno.
21. El no devolver un valor desde una función
recursiva cuando sea necesario, causará que casi todos los
compiladores generen un mensaje de advertencia.
22. La omisión del estado primitivo o la escritura
incorrecta del paso de recursión de modo que no converja al
estado primitivo, provocará una recursión infinita y
agotará tarde o temprano la memoria. Esto es análogo al
problema de los ciclos infinitos en las soluciones
iterativas (no recurrentes) La recursividad infinita también
puede ser provocada al proveer una entrada no
esperada.
23. La codificación de programas que dependen del
orden de evaluación de los operandos de los operadores que no
sean &&, ||, ?: ni coma (,) puede generar
errores, pues los compiladores no necesariamente evaluarán los
operandos en el orden que el programador espera.
MIGUEL Á. TOLEDO MARTÍNEZ
SUGERENCIAS, OBSERVACIONES Y CONSEJOS: SEGUNDA PARTE
SUGERENCIAS-3
24. Es un error de lógica que una función no recursiva
se llame a sí misma, ya sea directa o indirectamente, a
través de otra función.
25. Los programas en C++ no se compilan a menos que se
indiquen prototipos de función para todas las funciones o
que se definan las funciones antes de usarlas.
26. Debido a que los parámetros de referencia se
mencionan sólo por nombre en el cuerpo de la función llamada, el
programador podría tratarlos inadvertidamente como
parámetros de una llamada por valor. Esto puede provocar
efectos secundarios inesperados si el invocador
modifica las copias originales de las variables.
27. Declarar múltiples referencia en una instrucción
suponiendo que el & se distribuye a través de una lista de
nombres de variables separada por comas. Para declarar
las variables x, y y z como referencias a un entero
emplee la notación int &x = a, &y = b, &z
= c; en lugar de la notación incorrecta int& x = a, y = b, z = c; o la
otra notación incorrecta común int &x, y, z;
28. No inicializar una variable de referencia al
declararla es un error de sintaxis.
29. Intentar reasignar una referencia declarada
previamente como alias de otra variable es un error de lógica. El
valor de la otra variable simplemente se le asigna a
la localidad para la que la referencia es un alias.
30. Devolver un apuntador o referencia a una variable
automática en una función llamada es un error de lógica.
Algunos compiladores presentarán un mensaje de aviso
al encontrar esto en un programa.
31. Especificar e intentar utilizar un argumento
predeterminado que no sea el de más a la derecha (último) sin tomar
los predeterminados de todos los argumentos a su
derecha es un error de sintaxis.
32. Intentar acceder a una variable no global desde un
bloque exterior por medio del operador unario de resolución
de alcance es un error de sintaxis si no existe una
variable global con el mismo nombre que la variable del
bloque exterior, y es un error de lógica si es que
existe.
33. La creación de funciones sobrecargadas con listas
de parámetros idénticas y diferentes tipos de devolución es un
error de sintaxis.
34. Una función a la que se le han omitido los
argumentos predeterminados podría ser llamada de manera idéntica a
otra función sobrecargada; esto es un error de
sintaxis. Por ejemplo, cuando un programa tiene tanto una
función que explícitamente no recibe argumentos como
otra con el mismo nombre que contiene sólo
argumentos predeterminados, sucede un error de
sintaxis cuando se intenta utilizar dicho nombre de función
en una llamada que no pasa argumentos.
35. No poner la palabra clave class antes de cada
parámetro de tipo de una plantilla de función es un error de
sintaxis.
36. No emplear todos los parámetros de tipo de una
plantilla de función en la firma de la función es un error de
sintaxis.
No hay comentarios:
Publicar un comentario