#define unsigned long
Je suis d'essayer d'utiliser le #define
directive pour tout changer "ulong" à "unsigned long".
Voici un exemple:
#define ulong unsigned long
ulong idCounter = 0;
Malheureusement, je pense qu'il finit par remplacer ulong avec "unsigned", plutôt que "unsigned long". J'ai essayé le "#define ulong (unsigned long)", mais cela ne fonctionne pas non plus.
- Non, il ne devrait pas l'être. Ce qui vous fait penser à qui? Et vous devez vraiment être à l'aide d'un
typedef
au lieu d'un#define
. - J'ai trouvé ce que mon problème était, c'était un screwup quelque part d'autre dans le code (j'ai changé un #define pour un const, mais il a oublié d'ajouter "="). Je suis un peu nouveau sur #définit, et a été à essayer de les comprendre. Je vais juste utiliser typedef dans l'avenir.
- C'est précisément la raison pour laquelle vous ne devriez pas être à l'aide de
#define
s.
Vous devez vous connecter pour publier un commentaire.
Mieux utiliser un typedef. La raison de votre macro peut échouer en est - il pourrait ne pas syntaxiquement valide dans certains endroits. Considérer:
Dans ce cas, vous obtenez
Ce n'est pas valable, parce que les acteurs formulaire utilisé n'est pas compatible avec la façon dont vous nommez le type (il a composé de plus simple forme, comme un seul mot). Utiliser un typedef:
#define intptr int*
serait pause pourintptr a, b;
par exemple. Merci pour votre confiance, mate 🙂ulong long
avec un typedef. Pas sûr que cela prouve la supériorité de macros, ou leur mal inhérent bien 😉pourquoi n'utilisez-vous pas juste typedef?
Votre macro fonctionne OK:
donne
A l'origine, je suppose que vous avez déjà eu un typedef appelé
ulong
et ont essayé de remplacer avec le préprocesseur, mais d'autres personnes ont une autre de prendre sur elle. Si vous voulez vraiment leulong
, vous devez utiliser un typedef, comme ils l'ont dit.