La interfaz en mi sistema de compilación MacOS 10.6.3 para la biblioteca matemática POSIX es math.h, sin embargo, en mi sistema de destino el nombre del archivo de interfaz es cmath.h. En la escuela utilizamos cmath y me gustaría asegurarme de que mi proyecto compila cuando se entrega, cómo se logra esto. Los servidores y estaciones de trabajo en la escuela son x86 con Windows XP. El GCC está disponible en ambas plataformas.Interfaz matemática vs cMath en C++
Respuesta
En el estándar C++, las funciones de la biblioteca de matemáticas están definidos en dos cabeceras:
<cmath>
ellos contiene en el espacio de nombres std
(por ejemplo std::sin
), mientras que
<math.h>
ellos contiene en el mundial espacio de nombres (tan solo sin
).
Hay otras diferencias entre los dos: funciones mientras <math.h>
contiene todas las funciones matemáticas C con nombres diferentes para tipos distintos, tales como
double sin(double);
float sinf(float);
long double sinl(long double);
etc., <cmath>
contiene sobrecargado como
namespace std {
double sin(double);
float sin(float);
long double sin(long double);
}
etc. (Las bibliotecas de C++ también pueden exportar sinf
de <cmath>
, pero no puede confiar en esto en un programa portátil)
Finalmente, las funciones fabs
, fabsf
y fabsl
de la biblioteca estándar C se han convertido en sobrecargas de std::abs
en <cmath>
.
Aunque ambas cabeceras están en la norma, que realmente debería prefiere <cmath>
, como <math.h>
sólo está allí para mantener la compatibilidad con C pre-estándar ++ y C
No hay tal cosa como <cmath.h>
en C++ estándar.
OK. Eliminé mi respuesta en lugar de editarla, ya que cubriste las partes importantes aquí. Creo que vale la pena mencionar el uso del estilo de nomenclatura
@HarperShelby: ponlo, cerca del final. Espero que el OP lo lea hasta ahora, porque esta es toda una lista;) –
El objetivo es obtener buena información por ahí: puedes llevar un caballo al agua y todo eso. –
- 1. C++ - cmath vs math.h (y encabezados de extensión similares a c precedidos c.)
- 2. Interfaz vs Herencia Múltiple En C#
- 3. Emisión matemática simple en C#
- 4. C++/CLI clase de interfaz vs. estructura de interfaz
- 5. ¿Se recomienda usar cstdio, cstring, cmath, etc. en C++?
- 6. Función GCD en la biblioteca C++ sans cmath
- 7. Interfaz privada vs. método privado: objetivo c
- 8. constante literal vs variable en la biblioteca matemática
- 9. Mediana Función en C Biblioteca Matemática?
- 10. Pregunta matemática en C o en el objetivo C
- 11. Interfaz XML vs Hardcoded?
- 12. compiladores JIT para matemática
- 13. Asignación vs Inicialización en C++
- 14. interfaz objetivo-c - declarando variable vs just property?
- 15. Clase de miembros estáticos vs. interfaz normal tipo c
- 16. Interfaz en C#
- 17. iPhone/iPad doble precisión matemática
- 18. Crear objetos desde una interfaz en C#
- 19. implícita vs implementación de interfaz explícita
- 20. Pretty matemática de impresión en la aplicación de escritorio C#
- 21. Cómo convertir fórmula cadena a una fórmula matemática en C#
- 22. Comparación: métodos de interfaz vs métodos virtuales vs métodos abstractos
- 23. biblioteca C++ con interfaz c
- 24. Anotaciones vs interfaz de guayaba EventBus
- 25. Convertir cadena a evaluación matemática
- 26. Jmeter función matemática
- 27. C#/VB.Net Tarea vs vs Tema BackgroundWorker
- 28. Python matemática simbólica?
- 29. Java o Python para matemática?
- 30. Evaluación de expresión matemática
¿Cuál es su "sistema de destino". ¿Qué compilador, qué sistema operativo? Pregúntale a tu profesor las diferencias entre 'cmath.h' y' math.h'? ¿Es '' o ''? –
Lo siento, me refiero a que macos es mi sistema host y Windows XP es mi sistema de destino. Y si mi profesor conociera la respuesta, entonces no tendría que preguntar aquí. – awiebe