hi wer kennt sich auf mbed aus?? ich schreibe gerade eine arduino roboter bibliothek um und bekomme folgenden Fehler angezeigt leider weiß ich nicht mehr weiter.Anbei die.c die .h und das main Programm.
Anhang 33333
Anhang 33334
Anhang 33335
Druckbare Version
hi wer kennt sich auf mbed aus?? ich schreibe gerade eine arduino roboter bibliothek um und bekomme folgenden Fehler angezeigt leider weiß ich nicht mehr weiter.Anbei die.c die .h und das main Programm.
Anhang 33333
Anhang 33334
Anhang 33335
Wie sind denn Deine C++ Kenntnisse hinsichtlich Klassen, Konstruktor etc.?
Vergleiche mal die Struktur Deiner .ccp und .h mit funktionierenen Libraries bzw. lies ggf. mal etwas zu Klassen/Konstruktoren/Destruktoren dem Aufbau und den Bedingungen.Zitat:
Da der Konstruktor bei der Definition eines Objektes immer automatisch aufgerufen wird, darf er in der Regel
nicht
im private-Bereich der Klasse stehen. Sie könnten ansonsten kein Objekt der Klasse definieren da der Konstruktor nicht aufgerufen werden kann.
Im geposteten Code sehe ich kein "public:". Wenn der so vollständig ist, fehlt da noch einiges.
also cpp hab ich bislang nicht gemacht, wir machen in der Uni c. Ich hab mal meine .cpp in .c umgenannt da ich weiterhin mit c programmieren möchte.Gibts es da bei den Klassen und Strukturen unterschiede zwischen c und cpp ?
Ich habe das ganze jetzt mal übersichtlicher gestaltet und es sieht nun so aus...
Danke für die Hilfe
Anhang 33336
Anhang 33337
Anhang 33338
in C gibt es keine Klassen, sondern nur Strukturen.
Nur in C++ gibt es Klasssen, das ist ja genau der Grund, warum C++ auf der Basis von C entwickelt wurde.
C++ ist im Wesentlichen C90 plus Klassen plus Vererbung plus Overloading plus stream,
mit teilweise auch strengeren Regeln als C, nicht immer C99-kompatibel,
und C++ Syntax und Sprachumfang sind extrem Versions-abhängig ( C++(98), C++(03), C++(11), C++(14), C++(17) ) .
Arduino basiert auf C++ (die älteren Versionen C++(03), ab 1.6.6 dann C++(11))
PS,
Könntest du deinen Code bitte als Text in Code-Tags posten?!?
achso okay top.
ja ich habe eine roboter bib aus arduino mit cpp die ich nun auf mbed importieren will als c bib.
Anhang 33339
Anhang 33340
Ich hoffe du hast das gemeint mit code in Textform
Danke für eure/deine Hilfe
nein
poste bitte den korrekten vollständigen Sourcecode in normaler Textform, so wie hier...!
Code:#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x20,16,2);
void setup()
{
lcd.init();
lcd.backlight();
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Hello,world");
lcd.setCursor(0,1);
lcd.print("LCD I2C");
}
aber C++ Libs auf ANSI C runter-portieren .... na dazu viel Glück...! 8)
das sind nur kleine bibs die einen roboter fahren lassen, denke das sollte gehen?
Code:// include this library's description file
#include "Shieldbot.h"
#define right1 D5 //define I1 interface
#define speedPinRight D6 //enable right motor (bridge A)
#define right2 D7 //define I2 interface
#define left1 D8 //define I3 interface
#define speedPinLeft D9 //enable motor B
#define left2 D10 //define I4 interface
int speedmotorA = 255; //define the speed of motorA
int speedmotorB = 255; //define the speed of motorB
void Shieldbot::motor()
{
DigitalOut right1(D5);
DigitalOut speedPinRight(D6);
DigitalOut right2(D7);
DigitalOut left1(D8);
DigitalOut speedPinLeft(D9);
DigitalOut left2(D10);}
Code:// ensure this library description is only included once
#ifndef Shieldbot_h
#define Shieldbot_h
// include types & constants of Wiring core API
#include "mbed.h"
// library interface description
class Shieldbot
{
public:
void motor();
};
#endif
ja, so kann man's lesen.
Aber class:: etc gibts halt nicht in C.
kannst du mir anhand meines Beispiels das einmal richtig zeigen? ich hab mir das mal in coocox in c mit typedef usw angeschaut und versucht aber bekomme trotzdem noch Fehlermeldungen :(
ich selber kann kein C++, und C++ zu C portieren erst Recht nicht. Ich verwende nur die Arduino C++ Libs so wie sie sind.
Der einfachste Weg, den ich sehe:
Verwende weiter C++ mit g++, und wenn du aus Arduino-Libs alles herausstreichst was mit mit Serial() oder Wire() zu tun hat, kann man die Libs auch in jeder anderen Plattform/Umgebung weiter verwenden, wenn es denn ein g++ Compiler ist mit der gleichen Version: es ist ja alles regelrechter C++ Code, mehr nicht.
Ich habe sogar schon Arduino- C++ -Libs auf einem Raspberry Pi unter Linux C++ compilieren und laufen sehen.