IAR AVR nicht unterstützen kann Multi Dimension Array?

M

Maziar

Guest
IAR haben Problem mit zwei Array-Dimension?//////////// Beginn des Code

#
include <iom16.h>

unsigned char VRAM [2] [5];

void main (void)
(
unsigned char * p;
p = VRAM;
PORTD = * p;

)

//////////// Ende des Codes

haben, generieren:

Fehler [Pe513]:
Ein Wert vom Typ "unsigned char (*) [5]" nicht zugeordnet werden können, um ein Unternehmen vom Typ
"unsigned char *"

Fehler: 1
Warnungen: keinewarum?Iar nicht unterstützen kann multidimention Array wahr?

Was ist zu tun?

 
Maziar,

VRAM ist ein Array-Dimension, so wäre es falsch (von streng ANSI), um sie vollständig auf einen Zeiger auf diese Weise.

p = VRAM;
nicht zugeordnet werden p die Adresse des Elements auf [row0] [col0] als für Ihre Absichten.

Sie schreiben zum Beispiel:

p = VRAM [0];.Dies würde zu ordnen p die Adresse des ersten Elements (Zeile 0) am Col 0.

Vor wont geben einen Fehler.

 
Maziar schrieb:

IAR haben Problem mit zwei Array-Dimension?//////////// Beginn des Code# include <iom16.h>unsigned char VRAM [2] [5];void main (void)

(

unsigned char * p;

p = VRAM;

PORTD = * p;)//////////// Ende des Codeshaben, generieren:Fehler [Pe513]: Ein Wert vom Typ "unsigned char (*) [5]" nicht zugeordnet werden können, um ein Unternehmen vom Typ

"unsigned char *"Fehler: 1

Warnungen: keine
warum?
Iar nicht unterstützen kann multidimention Array wahr?Was ist zu tun?
 
i-Test p = VRAM;

in ke **, VC , BC Builder alle ok, aber IAR ...<img src="http://www.edaboard.com/images/smiles/icon_redface.gif" alt="Embarassed" border="0" />
 
Es ist gar nicht die ungewöhnliche Situation, in der einige Compiler ist ein bisschen mehr "permissive", dann andere.Aber es bedeutet nicht, dass das Ergebnis korrekt ist, auch Sie nicht zurück erhalten, einen Compiler-Fehler.Oft eine Kontrolle mit dem generierten Objekt-Code zeigt die meisten Fallen.

Bitte lesen Sie "Brian W. Kernighan
und Dennis M. Ritchie"
2. Auflage, Kapitel 5.7 Vielschichtigkeit Vektoren.

Über die Zuweisung eines Zeiger auf Zeiger Ich
bin dubtly wird.Das größte Problem hier ist, wenn Sie sie brauchen, um VRAM [row] [col] (auf einen Zeiger oder eine Funktion als Parameter) müssen Sie angeben, [col] Dimension mit Ausnahme der ersten Dimension [Zeile], das frei ist.

 
Das ist es, was PC-Lint versucht, Ihnen zu sagen,:

PC-lint für C / C (NT) Ver.8.00n, Copyright Gimpel Software 1985-2003
--- Module: E: \ WINDOWS \ Desktop \ test.c

--- Module: E: \ WINDOWS \ Desktop \ test.c
_
p = VRAM;
E: \ WINDOWS \ Desktop \ test.c 6 Fehler 64: Typkonflikt (Zuordnung) (unsigned char * = unsigned char (*) [5])

Und hier ist das, was Fehler 64 bedeutet:

64 Typkonflikt (Context) (TypeDiff)
- Es gab eine Diskrepanz in der Arten in einem
Zuordnung (oder implizite Zuordnung, siehe Hintergrund).TypeDiff wird die Art verändern.
Siehe Optionen EPN-, EPS-,-EPU, EVP-(Abschnitt 5.2 Fehler Hemmung Optionen) zu unterdrücken, diese Botschaft
Bei der Zuordnung einiger Arten von Zeigern.

Viel Spaß

 
Hi,

Probieren Sie die Zeile:
p = (unsigned char *) VRAM;

Ich denke, das wird kompilieren.Himmel.

 

Welcome to EDABoard.com

Sponsor

Back
Top