Αλλα

Mac Προειδοποίηση: προτείνετε παρενθέσεις γύρω από την ανάθεση που χρησιμοποιούνται ως τιμή αλήθειας

R

rublesaha

Πρωτότυπη αφίσα
22 Δεκεμβρίου 2008
  • 8 Ιανουαρίου 2009
γεια
Χρησιμοποιώ αυτό το απόσπασμα κώδικα

void * handle_;

if (handle_ =dlopen('/System/Library/Frameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('............');

}
αλλιώς εάν (handle_ =dlopen('/System/Library/PrivateFrameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('.................');
}

Λαμβάνω όμως την προειδοποίηση:
'πρότεινε παρενθέσεις γύρω από την ανάθεση που χρησιμοποιείται ως τιμή αλήθειας' για την πρώτη γραμμή i, π.χ. για τον βρόχο 'για'....μπορεί κάποιος να με βοηθήσει να απαλλαγώ από αυτήν την προειδοποίηση.. ΠΡΟΣ ΤΟ

kpua

25 Ιουλίου 2006


  • 8 Ιανουαρίου 2009
Πρώτα απ 'όλα, είναι γενικά κακή μορφή να υπάρχουν παρενέργειες στις δηλώσεις if().

Ωστόσο, μερικές φορές είναι ο απλούστερος τρόπος για να κωδικοποιήσετε αυτό που εννοείτε (αν και δεν νομίζω ότι είναι απαραίτητα στο παράδειγμά σας). Όταν έχετε μια ανάθεση σε μια δήλωση if, το GCC αναμένει γενικά κάτι σαν αυτό:

Κωδικός: |_+_|
Παρατηρήστε τις επιπλέον παρενθέσεις γύρω από την εργασία. Το GCC προτείνει να χρησιμοποιήσετε τις παρενθέσεις για να αποφύγετε το ακόλουθο σφάλμα:

Κωδικός: |_+_|
το οποίο δεν θα έλεγχε εάν η τιμή που έχει εκχωρηθεί στο foo είναι ίση με NULL, αλλά θα εκχωρούσε το boolean (bar() != NULL) στο foo.

Είναι επίσης σύνηθες και γενικά πιο σαφές να υπάρχει ο ρητός δυαδικός έλεγχος εκεί, γι' αυτό το αναμένει το GCC. μικρό

Τριβείο

προς το
24 Απριλίου 2008
  • 9 Ιανουαρίου 2009
Είναι επίσης επειδή η δήλωση

Κωδικός: |_+_|
είναι σωστό το C (αντιστοιχίστε το b στο a και ελέγξτε για μη μηδενικό), αλλά τις περισσότερες φορές οι άνθρωποι εννοούσαν πραγματικά

Κωδικός: |_+_|
Δεδομένου ότι η εκχώρηση εντός του if() είναι η εξαίρεση, το GCC εκδίδει μια προειδοποίηση σχετικά με αυτό. Επίσης, για τους μελλοντικούς αναγνώστες του κωδικού σας, οι επιπλέον παρενθέσεις υποδεικνύουν 'ναι, εννοώ πραγματικά την ανάθεση εδώ'.