3.6.1 mi_likely compiler error on ternary operator use.

Fermée Adaptée aux débutants
#1,473 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

  • #1486 par @Tyagiquamar — fermée sans fusion

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
85/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
c

Piste de recherche

Commencez dans src/prim/os.c, à mi_os_mem_config, la fonction liée dans l’issue. Vérifiez le chemin de compilation MSVC C++20 qui signale C2059 ; le travail est terminé lorsque la fonction n’utilise plus mi_likely dans une expression ternaire et que cette compilation réussit.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

mi_os_mem_config in prim/os.c was using mi_likely inside a ternary. That macro expands to (x) [[likely]], and [[likely]] is only allowed on a statement. MSVC reports C2059 when it shows up in an expression.

https://github.com/microsoft/mimalloc/blob/dcd6f09b1d878e06d62949dabea3417eec98c89a/src/prim/os.c#L43

Can be changed to regular if statement.

static inline const mi_os_mem_config_t* mi_os_mem_config(void) {
  const mi_os_mem_config_t* const config = &_mi_process.os_mem_config;
  // `mi_likely` is `(x) [[likely]]` under C++20. That attribute applies to a
  // statement, so it cannot sit inside a ternary (MSVC C2059).
  if mi_likely(config->page_size != 0) { return config; }
  return &mi_os_mem_config_default;
}
Langage dominant
C
Étoiles
13.5k
Forks
1.2k
Merge moyen
17 h 42 min
PR mergées (30 j)
27

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoft/mimalloc

Toutes les issues de microsoft/mimalloc

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.