PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Studio, C und struct


Ganon
2010-10-21, 19:47:59
Heyho.

Ich muss im Studium Anfang nächstes Jahr in C einen kleinen Roboter programmieren. Das wird wohl mit Visual Studio gemacht, denke ich mal, da das auf den PCs in der Uni u.a. mit drauf ist. Daher wollte ich mich im Vorfeld schon mal damit befassen.

Ich weiß nun nicht, wie genau sie das mit "C" meinen, oder ob auch "C++ ohne Klassen" reicht, aber ich habe mit in VS2010 ein leeres Projekt angelegt und dort eine start.c erstellt.

Dann einfach mal folgendes eingefügt:


#include <stdio.h>

struct vector3f {
float x;
float y;
float z;
};

typedef struct vector3f vector3f_t;

int main() {
vector3f_t a;

a.x = 1.0f;
a.y = 1.0f;
a.z = 1.0f;

vector3f_t b;

printf("Test %f",a.y);
}


Ihn stört dabei das vector3f_t b; Dort meint er, dass davor ein Semikolon fehlt und "Ungültige Verwendung dieses Typs als Ausdruck" "vector3f_t"


#include <stdio.h>

struct vector3f {
float x;
float y;
float z;
};

typedef struct vector3f vector3f_t;

int main() {
vector3f_t a;

vector3f_t b;

a.x = 1.0f;
a.y = 1.0f;
a.z = 1.0f;

printf("Test %f",a.y);
}


Dieses wiederum kompiliert er... Benenne ich die Datei start.cpp, dann kompiliert er beides...

Kann mir vllt. jemand sagen woran es liegt, dass er im C-Modus das nicht kompiliert? Bzw. wie muss es als .c Datei richtig aussehen?

Trap
2010-10-21, 20:01:21
In C muss man alle Variablen am Anfang der Funktion definieren.

Ganon
2010-10-21, 20:13:05
Oh OK, das ist mir jetzt allgemein neu. Aber man muss es halt wissen ^^

Dankeschön :)

ScottManDeath
2010-10-22, 00:59:08
In C89 muss man, wie Trap schon gesagt hat, Variablen am Anfang des Scopes definieren. In C++ und C99 (welches vom Visual Studio C++ compiler nicht unterstuetzt wird), kann die Definition ueberall erfolgen.

samm
2010-10-22, 01:29:00
Ganon, ich habe im Studium ebenfalls zwei Roboter in C programmiert, und wir benutzten jeweils eine auf die Hardware abgestimmte Programmierumgebung und nicht VS. Je nach Hardware, stell dich darauf ein, möglichst kleine Programme zu schreiben^^