Bit Field

G

Guest

Guest
γεια,

Κωδικός:

struct DISK_REGISTER (

unsigned έτοιμο: 1?

unsigned error_occured: 1?

unsigned disk_spinning: 1?

unsigned write_protect: 1?

unsigned head_loaded: 1?

unsigned error_code: 8?

unsigned track: 9?

unsigned τομέας: 5? / / 27 bits

unsigned εντολή: 5?

)?

struct DISK_REGISTER * disk_reg?void main (void)

(

char new_sector = 2, new_track = 3, ΔΙΑΒΑΣΤΕ = 4, readout = 0?, ενώ (1)

(/ * Καθορισμός τομέα και καλό δρόμο για την έναρξη ανάγνωση * /

disk_reg-> τομέα = new_sector?

disk_reg-> track = new_track?

disk_reg-> command = ΔΙΑΒΑΣΤΕ? / / !!!!?/ * Περιμένετε μέχρι να γίνει πράξη, θα είναι έτοιμο αληθές * /

while (! disk_reg-> έτοιμο)?/ * Έλεγχος για σφάλματα * /

εάν (disk_reg-> error_occured)

(/ * Ανακρίνουν disk_reg-> error_code για τύπο σφάλματος * /

/ διακόπτη / (disk_reg-> error_code)

//......

))

)
 
δεν έχετε την έναρξη του δείκτη * disk_reg και ως εκ τούτου θα έπαιρνε αξία garbarge ...
έτσι διαθέσουν καλύτερα κάποια μνήμη και initialise αυτό και στη συνέχεια προσπαθήστε ξανά .....

 
Γεια σου,
Α. Anand Srinivasan έγραψε:

έτσι διαθέσουν καλύτερα κάποια μνήμη και initialise αυτό και στη συνέχεια προσπαθήστε ξανά .....
 
Εννοούσα κάτι σαν ....άλλο το δείκτη του βρίσκει κάποια θέση μνήμης σκουπιδιών από την ίδια και ίσως η θέση μνήμης θα μπορούσε να περιέχει ήδη μια τιμή (σκουπίδια) ...

struct DISK_REGISTER * disk_reg = (struct DISK_REGISTER *) ρεκόρ?

 
Α. Anand Srinivasan έγραψε:

struct DISK_REGISTER * disk_reg = (struct DISK_REGISTER *) ρεκόρ?
 
i είδα μόλις τώρα ότι η σύνδεση ....sorry Το Didnt παρατηρήσετε ότι ....
Τι είναι το σφάλμα που επιδεικνύεται ....μπορείτε να το αντιγράψετε και μετά από αυτό ώστε να μπορέσω να έχουν περάσει .....

 
Κωδικός:

struct DISK_REGISTER (

unsigned έτοιμο: 1?

unsigned error_occured: 1?

unsigned disk_spinning: 1?

unsigned write_protect: 1?

unsigned head_loaded: 1?

unsigned error_code: 8?

unsigned track: 9?

unsigned τομέας: 5? / / 27 bits

unsigned εντολή: 5?

)?

/ / struct DISK_REGISTER * disk_reg = (struct DISK_REGISTER *) DISK_REGISTER_MEMORY?

struct DISK_REGISTER * disk_reg = (struct DISK_REGISTER *) ρεκόρ?
 
Τώρα δοκιμάστε αυτό .....
Παράθεση:

struct DISK_REGISTER (

unsigned έτοιμο: 1?

unsigned error_occured: 1?

unsigned disk_spinning: 1?

unsigned write_protect: 1?

unsigned head_loaded: 1?

unsigned error_code: 8?

unsigned track: 9?

unsigned τομέα: 5? / / 27 bits

unsigned εντολή: 5?

) ρεκόρ?

DISK_REGISTER_MEMORY ρεκόρ?

μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?

 
τώρα είναι αυτό το λάθος ...

missing "?" DISK_REGISTER_MEMORY πριν »

 
θα πρέπει να έχετε χάσει ένα ερωτηματικό κάπου ....αυτό είναι ένα βασικό λάθος παρακαλούμε να βεβαιωθείτε ότι έχετε χρησιμοποιήσει ερωτηματικό στο τέλος της κάθε δήλωση .....ή θα μπορούσε να υπάρχει κάποια mismatchment οφείλεται σε επιπλέον κενά ....
μετά το σύνολο των κωδικό σου .....

 
before

που typedef
πριν

struct DISK_REGISTER (
unsigned έτοιμο: 1?
......

 
Γεια
μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?

Θα πρέπει να είναι η κύρια () συνάρτηση.
Χρειάζεσαι executble μέρος για την εκχώρηση μνήμης.

 
vinseth έγραψε:

Γεια

μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?Θα πρέπει να είναι η κύρια () συνάρτηση.

Χρειάζεστε ένα μέρος executble να εκχωρήσει μνήμη.
 
Ναι, το κύριο μπορούν να έχουν πρόσβαση it.You κηρύξει τη μεταβλητή έξω και κύρια θα πρέπει να καθορίζει (δημιουργείτε μνήμης) είναι κύρια μέσα.

Κάνοντας τα εξής, είμαι καθορισμό gloabl μεταβλητή.
μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?

 
vinseth έγραψε:

Ναι, το κύριο μπορεί να έχει πρόσβαση it.You δηλώσει τη μεταβλητή έξω και κύρια θα πρέπει να καθορίζει (δημιουργείτε μνήμης) είναι κύρια μέσα.Κάνοντας τα εξής, είμαι καθορισμό gloabl μεταβλητή.

μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?
 
Γεια Βοήθεια, Στην αρχική κωδικό σας, δοκιμάστε αυτό που αντικαθιστά:

struct DISK_REGISTER * disk_reg?με αυτό:

struct dr DISK_REGISTER, * disk_reg = &dr;dr είναι η διάρθρωση, και disk_reg σημεία σε αυτό.

Υπάρχουν πολλοί τρόποι για να επιλύσει αυτό το πρόβλημα, ανάλογα με το τι ακριβώς χρειάζεστε στο σύνολο του έργου σας.
Τελευταία επεξεργασία από echo47 στις 23 Ιουλίου, 2007 14:50? Επεξεργάσθηκε 1 φορά συνολικά

 
struct DISK_REGISTER (unsigned έτοιμο: 1?unsigned error_occured: 1?unsigned disk_spinning: 1?unsigned write_protect: 1?unsigned head_loaded: 1?unsigned error_code: 8?unsigned track: 9?unsigned τομέας: 5? / / 27 bitsunsigned εντολών: 5?) ρεκόρ?DISK_REGISTER_MEMORY ρεκόρ?μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?αυτό δεν μπορεί να work.As C μεταγλωττιστές δεν μπορεί να δέχεται δυναμικές ορισμό.
μητρώο * disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?

ίσως δοκιμάστε το εξής,

μητρώο * disk_reg? / δήλωση δείκτη

disk_reg = (Λεπτομέρειες *) DISK_REGISTER_MEMORY?
ή
disk_reg = (Λεπτομέρειες *) & DISK_REGISTER_MEMORY? / / καθορισμός, και περνώντας τη διεύθυνση.

 
Γεια σου,

Ευχαριστώ echo47, μπορείτε ήδη να με βοηθήσει για την επίλυσή του.και ευχαριστώ όλους για την κοινή knowladge.

π.χ.: Bit Field Δομή
Κωδικός:

struct packed_struct (

unsigned int f1: 1?

unsigned int f2: 1?

unsigned int f3: 1?

unsigned int F4: 1?

unsigned int Τύπος: 4?

unsigned int funny_int: 9?

unsigned int normal_int: 8?

)
 
κάθε μεταβλητή δηλώνεται έξω από τις λειτουργίες είναι μια παγκόσμια μεταβλητή ....είναι ακριβώς όπως οποιαδήποτε άλλη μεταβλητή και αν είναι μια συλλογή των τιμών (μεταβλητών )....ως εκ τούτου να αναγνωρίσει μόνο η μεταβλητή έξω .....
Τελευταία επεξεργασία από το A. Anand Srinivasan στις 23 Ιουλίου του 2007 17:54? Επεξεργάσθηκε 1 φορά συνολικά

 
Μπορείτε να προετοιμάσει ένα struct που περιέχει τα πεδία bit όπως και άλλα structs.Για παράδειγμα:

struct packed_struct foo = (1, 0, 1, 0, 12, 500, 200)?
 

Welcome to EDABoard.com

Sponsor

Back
Top