Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet

ΕΠΙΔΙΌΡΘΩΣΗ: Λανθασμένο κωδικό υπολογιστή δημιουργείται για μια δήλωση "διακόπτη" με το Visual C++ 2010 x 64 του μεταγλωττιστή

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη: 2802711
Συμπτώματα
Ας υποθέσουμε ότι μεταγλώττιση αρχείου κώδικα C ή C++ προέλευσης σε ένα δυαδικό αρχείο που βασίζονται σε επεξεργαστή x 64, χρησιμοποιώντας το πρόγραμμα μεταγλώττισης Visual C/C++ (Cl.exe) στο Microsoft Visual Studio 2010. Αρχείο προέλευσης κώδικα περιέχει μια συνάρτηση η οποία χρησιμοποιεί μια δήλωση Εναλλαγή . Σε αυτήν την περίπτωση, λανθασμένο κωδικό μηχανή μπορεί να δημιουργηθούν για τη δήλωση διακόπτη , εάν ισχύουν οι ακόλουθες συνθήκες:
  • Είναι ενεργοποιημένη η επιλογή μεταγλωττιστή1 (Only_inline) /Ob.
  • Το /O1 (μέγεθος Ελαχιστοποίηση), /O2 (Μεγιστοποίηση της ταχύτητας), /Ox (πλήρους βελτιστοποίησης) ή επιλογή μεταγλωττιστή βελτιστοποίησης /Og (καθολικό βελτιστοποιήσεις) είναι ενεργοποιημένη.
  • Η επιλογή μεταγλωττιστή /GL (ολόκληρο πρόγραμμα βελτιστοποίησης) είναι απενεργοποιημένη.
Προτεινόμενη αντιμετώπιση

Πληροφορίες επείγουσας επιδιόρθωσης

Μια υποστηριζόμενη επείγουσα επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, προορίζεται για τη διόρθωση μόνο το ζήτημα που περιγράφει αυτό το άρθρο. Eφαρμόστε τη μόνο σε συστήματα που αντιμετωπίζουν το συγκεκριμένο ζήτημα.

Για να επιλύσετε αυτό το ζήτημα, επικοινωνήστε με υπηρεσίες υποστήριξης πελατών της Microsoft για να αποκτήσετε την επείγουσα επιδιόρθωση. Για μια πλήρη λίστα αριθμών τηλεφώνου υπηρεσίες υποστήριξης πελατών της Microsoft και πληροφορίες σχετικά με το κόστος υποστήριξης, επισκεφθείτε την ακόλουθη τοποθεσία Web της Microsoft:Σημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που υφίστανται κανονικά για κλήσεις υποστήριξης μπορεί να ακυρωθεί εάν έναν επαγγελματία υποστήριξης της Microsoft κρίνει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Οι συνηθισμένες χρεώσεις υποστήριξης θα ισχύει για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση.

Προϋποθέσεις

Για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση, πρέπει να έχετε το Visual Studio 2010 Service Pack 1 (SP1) εγκατεστημένο.

Απαίτηση επανεκκίνησης

Δεν χρειάζεται να κάνετε επανεκκίνηση του υπολογιστή μετά την εφαρμογή αυτής της επείγουσας επιδιόρθωσης, εάν τα ενεχόμενα αρχεία δεν χρησιμοποιούνται. Συνιστάται να κλείσετε τα στοιχεία που σχετίζονται με το Visual Studio 2010 πριν να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση.

Πληροφορίες αρχείου

Η καθολική έκδοση αυτής της επείγουσας επιδιόρθωσης έχει τα χαρακτηριστικά αρχείου (ή νεότερα χαρακτηριστικά αρχείου) που παρατίθενται στον παρακάτω πίνακα. Οι ημερομηνίες και οι ώρες για αυτά τα αρχεία αναφέρονται σε συντονισμένη παγκόσμια ώρα (UTC). Όταν προβάλλετε τις πληροφορίες του αρχείου, τότε μετατρέπεται σε τοπική ώρα. Για να βρείτε τη διαφορά μεταξύ της ώρας UTC και της τοπικής ώρας, χρησιμοποιήστε το Ζώνη ώρας καρτέλα με το Ημερομηνία και ώρα στοιχείο στον πίνακα ελέγχου.
Όνομα αρχείουΈκδοση αρχείουΜέγεθος αρχείουΗμερομηνίαΏραΠλατφόρμαΔιαδρομή
C2.dll16.0.40219.4442,606,71211-Μαρ-201319:24x 86Microsoft Visual Studio 10.0\VC\bin
C2.dll16.0.40219.4442,493,56012-Μαρ-201316:48x 86Microsoft Visual Studio 10.0\VC\bin\x86_amd64
C2.dll16.0.40219.4442,593,92812-Μαρ-201316:48x 86Microsoft Visual Studio 10.0\VC\bin\x86_ia64
C2.dll16.0.40219.4442,960,50412-Μαρ-201316:48x 64Microsoft Visual Studio 10.0\VC\bin\amd64

Περισσότερες πληροφορίες
Για να αναπαραγάγετε αυτό το ζήτημα, δημιουργήστε ένα αρχείο προέλευσης C ή C++ που περιέχει τον ακόλουθο κώδικα:
#include <stdio.h>int test(int bps, int sflags){    if (sflags & (1 << bps))    {        switch (bps)        {        case 1:  return 1;        case 2:  return 3;        default: return 0;        }    }    else    {        switch (bps)        {        case 1:  return 2;        default: return 0;        }    }} void main(){    int res = test(1, -1);    printf("%d\n", res);}


Στη συνέχεια, ανοίξτε το Visual Studio x 64 διασταυρώνεται με γραμμή εντολών εργαλείων ή Visual Studio x 64 Win64 εντολών στο Visual Studio 2010 και μεταγλωττίστε το αρχείο προέλευσης, χρησιμοποιώντας την ακόλουθη εντολή:
cl /Ob1 /O2 'Η διαδρομή του αρχείου προέλευσης'

Το αναμενόμενο αποτέλεσμα είναι 1. Ωστόσο, το πραγματικό αποτέλεσμα είναι 0.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Αναφορές
Για περισσότερες πληροφορίες σχετικά με την επιλογή του μεταγλωττιστή της /Ob , μεταβείτε την ακόλουθη τοποθεσία MSDN στο Web: Για περισσότερες πληροφορίες σχετικά με την επιλογή του μεταγλωττιστή της /GL , μεταβείτε την ακόλουθη τοποθεσία MSDN στο Web: Για περισσότερες πληροφορίες σχετικά με τις Επιλογές βελτιστοποίησης /O , μεταβείτε την ακόλουθη τοποθεσία MSDN στο Web:

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί με μηχανική μετάφραση

Ιδιότητες

Αναγνωριστικό άρθρου: 2802711 - Τελευταία αναθεώρηση: 03/29/2013 08:48:00 - Αναθεώρηση: 3.0

Microsoft Visual Studio 2010 Service Pack 1, Microsoft Visual Studio 2010 Ultimate, Microsoft Visual Studio 2010 Professional, Microsoft Visual Studio 2010 Premium with MSDN

  • kbqfe kbHotfixServer kbfix kbsurveynew kbexpertiseadvanced kbmt KB2802711 KbMtel
Σχόλια
t/javascript"> Asimov.clickstreamTracker.init();