À l'aide de vide dans les fonctions sans paramètre?
En C++ à l'aide de void
dans une fonction sans paramètre, par exemple:
class WinMessage
{
public:
BOOL Translate(void);
};
est redondant, vous pourriez tout aussi bien écrire Translate();
.
J'ai, moi-même, généralement, l'inclure comme c'est un peu utile lors de l'achèvement de code appui IDEs afficher une void
, puisqu'elle garantit que moi que la fonction prend certainement pas de paramètre.
Ma question est, Est l'ajout de void
de paramètre moins les fonctions d'une bonne pratique? Doit-il être encouragé dans le code moderne?
C'est une gueule de bois de C
eu une gueule de bois de C." Mhmm. Semble normal.
Voici le Lien qui pourrait aider stackoverflow.com/questions/7412274/...
eu une gueule de bois de C." Mhmm. Semble normal.
:)
Voici le Lien qui pourrait aider stackoverflow.com/questions/7412274/...
OriginalL'auteur ApprenticeHacker | 2012-03-03
Vous devez vous connecter pour publier un commentaire.
En C++
est identique à:
Le fait que le premier style peut encore être légalement écrit peut être attribuée à C.
n3290 § C. 1.7 (C++ et C ISO compatibilité):
En C, il est préférable d'éviter que des "inconnus". En C++, c'est superflu.
Réponse courte: en C++, c'est une gueule de bois de trop C programmation. Qu'il met dans le "ne pas le faire, sauf si vous avez vraiment de" support de C++ à mon avis.
int f()
en C++? Dois-je utiliserexternal "C"
pour ce cas d'utilisation?pourquoi voudriez-vous faire cela? C'est un comportement indéterminé si vous vous trompez, et un héritage de gueule de bois à partir de début C jours pour réduire compilateur/linker complexité. En C++11 variadic templates sont un coffre-fort, modernes, bien, mais pas un équivalent direct.
Je l'ai utilisé comme un type d'un pointeur de fonction array. Nous avons échangé tableau de pointeurs entre le client et le code de la dll, et ainsi d'éviter la surcharge de l'appel de fonctions dll constamment.
Si vous voulez de la plate-forme alors que je venais de faire un tableau de
FARPROC
et de voter pour les appels.Je ne peux pas trouver après un rapide et recherche de base si FARPROC est définie par la norme. Je suis en utilisant C89 dans les systèmes embarqués, je ne pense pas que je peux compter sur FARPROC en cours de définition. Par la manière, ce qui est FARPROC définition? Je parie que c'est
int f()
ouvoid *f()
.OriginalL'auteur Flexo
Je ne vois absolument aucune raison pour cela. IDEs vais juste terminer l'appel d'une fonction avec un argument vide de la liste, et 4 personnages moins.
Personnellement, je crois que c'est les verbose C++ même plus de commentaires. Il n'y a pas la version de la langue, je suis conscient de ce que requiert l'utilisation de
void
ici.:)
OriginalL'auteur rubenvb
Je pense qu'il va seulement aider dans rétrocompatibilité avec les anciens du code C, sinon il est redondant.
OriginalL'auteur Ghasan
Je sentir comme pas. Raisons:
BOOL Translate()
forme, alors que d'autres la lecture de votre code sera plus à l'aise et productif.foo(void)
veux dire?"OriginalL'auteur Bingo
Tout comme une note de côté. Une autre raison pour ne pas le vide, c'est que des logiciel starUML, qui peut lire le code et de générer des diagrammes de classe, de lire le vide comme un paramètre. Même si cela peut être une faille dans la UML des logiciels de génération, il est toujours ennuyeux d'avoir à revenir en arrière et supprimer le "vide"s si vous voulez avoir nettoyer les diagrammes de
OriginalL'auteur CoderXXX