J'ai lu que les variables const déclarées dans la portée globale sont stockées dans .rodata. ce que je comprends maintenant est des données en lecture seule. Souvent, apparemment, cela est stocké dans la ROM. J'ai commencé à lire sur Template Meta Programming en C++. donc je suis d'abord demandé pourquoi il a besoin d'être en const .rodata ou statique tels queC++ static const variables et ROMable
template<int N>
struct is_even<N>{
static const bool value = N % 2 == 0;
}
pourquoi doit-il être const statique? aussi qu'est-ce que cela m'achète? Quelle est la signification d'être dans .rodata? quelle est la signification d'être soi-disant ROMable? Je comprends les modèles car ils sont similaires aux génériques utilisés en C# I. Mais juste beaucoup plus puissant. Ce que j'essaie de comprendre, c'est pourquoi ces contraintes sont-elles nécessaires et que fait le compilateur lors de l'évaluation de mon programme?
Tous liens et références bienvenus.
Blair
Les données en lecture seule d'une application sont stockées dans la RAM. ROM - Mémoire en lecture seule - peut seulement être lu. Une section en lecture seule de RAM est une chose complètement différente; son statut en lecture seule peut être modifié lors de l'exécution. – molbdnilo