2016-04-05 1 views

Répondre

1

Tant qu'il n'y a que des constantes impliquées dans une expression, elle sera calculée au moment de la compilation. C++ constexpr est la plupart du temps un moyen sûr de le faire sans impliquer les macros. En C, il n'y a que des macros. Par exemple:

#define CIRCLE_AREA(r) (int32_t)((double)(r) * (double)(r) * M_PI) 

int32_t area = CIRCLE_AREA(5); 

effectue tous les calculs à la compilation, il est donc équivalent à l'écriture:

int32_t area = 78; 
+0

'static inline int32_t circle_area (double r) {return r * r * M_PI; } '? –

+0

@JonathanLeffler Cela pourrait forcer le calcul à faire en cours d'exécution, je crois. – Lundin

+0

Est-ce possible avec des chaînes constantes? – Chirality