Maik81SE
Anmeldungsdatum: 17. März 2015
Beiträge: 20
|
Moin @ll. Ich habe mal was gelesen, gehört und weiß 100 pro, das es z.B. in Pascal geht. und zwar will ich nur ein Bit (bool) als Parameter in einer Funktion übergeben. In fpc würde ich es so schreiben.
| function getch(echo: Boolean): String;
|
in C++ wollte ich es so haben:
| unsigned char getch(bool echo){}
|
nur sagt Code::Blocks unzulässiger Funktionsaufruf.
ich weiß ja, das in C++ sehr viel zu beachten ist, was bei FPC keine rolle spielt nur finde ich diesen Fehler gerade nicht.
Wenn ich jetzt nicht gerade auf einen ATmega16 arbeiten würde, wäre es mir ja egal und ich würde auch einen char umsteigen.
hätte jemand von euch einen Wink mit dem Zaunspfahl übrig? Danke im Vorraus. PS: auch wenn ich im Moment auf Ubuntu 14.10 schreibe ist dies eine sache, die am ende auf einem AVR laufen soll.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Wie lautet denn die Fehlermeldung? Unknown Type bool?
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12821
|
Kein Problem zu sehen: $ cat x.cxx
unsigned char getch(bool echo){
return 'x';
}
int main() {
unsigned char y = getch(false);
return y;
}
$ g++ -ansi -Wall x.cxx && echo OK
OK
$
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5329
|
Maik81SE schrieb: nur sagt Code::Blocks unzulässiger Funktionsaufruf.
Wie rufst du die Funktion auf? Bitte immer den ganzen minimalen (nicht)funktionierenden Code posten, mit dem das Problem auftritt.
|
Maik81SE
(Themenstarter)
Anmeldungsdatum: 17. März 2015
Beiträge: 20
|
user unknown schrieb: Wie lautet denn die Fehlermeldung? Unknown Type bool?
Extakte Fehlermeldung lautet
| Code /APIs/Schnittstellen.h|35|error: unknown type name ‘bool’|
|
sebix schrieb: Maik81SE schrieb: nur sagt Code::Blocks unzulässiger Funktionsaufruf.
Wie rufst du die Funktion auf? Bitte immer den ganzen minimalen (nicht)funktionierenden Code posten, mit dem das Problem auftritt.
Noch Rufe ich IHN nicht aus, da ich erst mal dabei bin alle benötigten Routinen zu schreiben.
Ein Auszug dieser .h file hilft vielleicht am ehesten. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 | #ifndef SCHNITTSTELLEN_H
#define SCHNITTSTELLEN_H
#include <avr/io.h>
#define Takt 16000000UL // 16MHz Systemtakt
#define BAUD 9600UL // 9600 BAUD Asynchron 8N1
// Änderungen nur via Setup File von außen möglich
unsigned char getch(bool echo) // zeichen vom USART holen
{
while (!(UCSRA & (1 << RXC))); // Warten bis Zeichen da
if (!(echo)) // Zeichen mit oder Ohne echo holen
{
return UDR; // Zeichen abholen
}
else
{
int x; // Hilfsvariable
x = UDR; // abholen und sichern
while (!(UCSRA & (1 << UDRE))); // warte bis Sender frei
UDR = x; // Zeichen als echo zurück
return x; // Zeichenn zurückgeben
}
}
#endif // SCHNITTSTELLEN_H
|
ich vermute mal Stark nur ein vergessener
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Wie kompilierst Du das denn? Ich habe da die Vermutung, dass Du dazu einen C-Compiler verwendest...
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12821
|
Lysander schrieb: Wie kompilierst Du das denn? Ich habe da die Vermutung, dass Du dazu einen C-Compiler verwendest...
👍
|
Maik81SE
(Themenstarter)
Anmeldungsdatum: 17. März 2015
Beiträge: 20
|
Lysander schrieb: Wie kompilierst Du das denn? Ich habe da die Vermutung, dass Du dazu einen C-Compiler verwendest...
😲 so what???
| ||=== Build: Debug in starter_key (compiler: GNU GCC Compiler for AVR) ===|
|
jetzt verstehe ich die welt ja gleich mal wieder null zumal ja auch die Toolchain hoffendlich richtig eingestellt is. EDIT:
Möglich, das das vielleicht auch noch wichtig ist. | avr-gcc -Wall -mmcu=atmega16 -DF_CPU=16000000UL -g -mmcu=atmega16 -I/usr/include -c main.c -o "obj/Debug/Dropbox/SH-DL/USB-Dongle/starter key/starter_key/main.o"
|
- Bilder
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
avr-gcc klingt nach C-Compiler! Zumindest das Kommando der klassischen Gnu Compiler Collection für den C-Compiler lautet gcc - für C++ lautet das Kommando g++ .
|
Maik81SE
(Themenstarter)
Anmeldungsdatum: 17. März 2015
Beiträge: 20
|
Lysander schrieb: avr-gcc klingt nach C-Compiler! Zumindest das Kommando der klassischen Gnu Compiler Collection für den C-Compiler lautet gcc - für C++ lautet das Kommando g++ .
Ok...
Jetzt verwirst du mich aber mal gerade.
Wollte eigend den ATmega16 in C++ schreiben, aber das was ich hier so in sämtlichen Tuts und foren lese geht das wohl nicht so ohne weiteres.
also doch in C und alternative für Bool suchen. ☹ 😮 Bin gerade mal über das hier gestolpert... | #if defined (__cplusplus)
extern "C" {
#endif /* __cplusplus */
|
Könnte mir das helfen oder macht es sinn eine make zu schreiben? Dann werd ich meinen Spaß bekommen... ☹
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Maik81SE schrieb: Lysander schrieb: avr-gcc klingt nach C-Compiler! Zumindest das Kommando der klassischen Gnu Compiler Collection für den C-Compiler lautet gcc - für C++ lautet das Kommando g++ .
Ok...
Jetzt verwirst du mich aber mal gerade.
Wieso das denn? Ich habe Dir ja nur eine Analogie aufgezeigt - das Kommando avr-gcc klingt ja so, als würde es irgend wie mit dem gcc in Zusammenhang stehen. Und dann wäre das eben eher der C-Compiler und nicht ein C++-Compiler. Was das genau ist und tut, musst Du schon selber rausfinden - da wird es ja sicherlich Dokumentation zu geben‽
Wollte eigend den ATmega16 in C++ schreiben, aber das was ich hier so in sämtlichen Tuts und foren lese geht das wohl nicht so ohne weiteres.
Na dann ist die Frage ja offenbar beantwortet 😉 Nutze doch einfach diese Idee: Link Zum restlichen Beitrag sage ich mal nix - das hat mich nämlich einfach nur verwirrt! 😛
|
Maik81SE
(Themenstarter)
Anmeldungsdatum: 17. März 2015
Beiträge: 20
|
Lysander schrieb:
Nutze doch einfach diese Idee: Link
☺ Warum zum geier wird sowas in keiner Literature genannt. naja. Zumindest war ist das Thema nun auch gelöst.
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Maik81SE schrieb: ☺ Warum zum geier wird sowas in keiner Literature genannt. naja. Zumindest war ist das Thema nun auch gelöst.
Wird es bestimmt - muss aber ja auch gute (und aktuelle) sein 😉 War der Datentyp denn jetzt der ausschlaggebende Faktor, dass Du C++ nutzen wolltest‽ Ansonsten musst Du Dich ja jetzt schon massiv umstellen... Wenn es denn aber wirklich C++ sein soll, nimm doch ein Arduino-Board.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12821
|
Maik81SE schrieb:
☺ Warum zum geier wird sowas in keiner Literature genannt.
Oh, das steht bestimmt im Standard. Den kannst Du käuflich erwerben. Ist manchmal gar nicht so schlecht, das zur Verfügung zu haben. Suchmaschine geht natürlich auch. 😬
naja. Zumindest war ist das Thema nun auch gelöst.
Fein!
|
Maik81SE
(Themenstarter)
Anmeldungsdatum: 17. März 2015
Beiträge: 20
|
Lysander schrieb: Maik81SE schrieb: ☺ Warum zum geier wird sowas in keiner Literature genannt. naja. Zumindest war ist das Thema nun auch gelöst.
Wird es bestimmt - muss aber ja auch gute (und aktuelle) sein 😉 War der Datentyp denn jetzt der ausschlaggebende Faktor, dass Du C++ nutzen wolltest‽ Ansonsten musst Du Dich ja jetzt schon massiv umstellen... Wenn es denn aber wirklich C++ sein soll, nimm doch ein Arduino-Board.
Arduino-Board ist für das, was ich baue zu overloaded. und da ich von Gnublin auf C++ gekommen bin und nicht noch älter (C) arbeiten will, will ich mich nur noch mit fpc und c++ beschäftigen. C++ finde ich zugegeben doch etwas einfach zu verstehen als C auch wenn es quasi das selbe in Grün ist. rklm schrieb: Maik81SE schrieb:
☺ Warum zum geier wird sowas in keiner Literature genannt.
Oh, das steht bestimmt im Standard. Den kannst Du käuflich erwerben. Ist manchmal gar nicht so schlecht, das zur Verfügung zu haben. Suchmaschine geht natürlich auch. 😬
naja. Zumindest war ist das Thema nun auch gelöst.
Fein!
Da passt es ja, das ich mit mit alles was ich für wichtig erachte als Link in die FAFO schieb und einmal im Monat mein eigenes Buch drucke ^^
|