|
|
|
|
So, Demo ist ausgezeichnet gelaufen. Nu hab ich wieder n bisschen Luft um ordentlich zu arbeiten.
Wo ist mein Erfolgsbonus?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 21.01.2011 10:25]
|
|
|
|
|
|
was mach ich, wenn ich in meinem c++-programm funktionen und structs aus ner c-datei nutzen will? header schreiben? wenn ja: geht das überhaupt, wenn die dinger lokal deklariert sind, oder muss ich dann auch die c-datei ändern?
|
|
|
|
|
|
|
Hier, falls mal wer Langeweile hat:
http://www.informatik.uni-rostock.de/~rn054/wettbewerbinfos.html
Meine beiden Betreuer von der TI damals veranstalten regelmäßig Programmierwettbewerbe. Hier die aktuellen Aufgaben. Man kann da natürlich nur als Uni-Rostocker mitmachen, aber die Aufgaben sind mit Liebe gestaltet und vllt. löst ja Jemand hier so etwas gerne spasseshalber
e\ Vllt mal ne ganz nette Gelegenheit mich mit C, C++, Java, Pascal und Haskell verteft auseinanderzusetzen.
Aber eigentlich keine Lust
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 21.01.2011 11:42]
|
|
|
|
|
|
Hey Martin!
We've got exciting news: Your $20 Amazon.com Gift Card* is ready to be used!
Na toll, was soll ich denn mit einem Gutschein. Mist, ich dachte die wurden alle storniert
e\ Hmm meine KK wurde gar nicht belastet. Komisch
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 21.01.2011 11:49]
|
|
|
|
|
|
| Zitat von flying sheep
was mach ich, wenn ich in meinem c++-programm funktionen und structs aus ner c-datei nutzen will? header schreiben? wenn ja: geht das überhaupt, wenn die dinger lokal deklariert sind, oder muss ich dann auch die c-datei ändern?
| |
extern "C"
{
#include "c-header.h"
}
|
|
|
|
|
|
|
Würd mich interessieren in welchem Zeitraum das aufgenommen wurde.
|
|
|
|
|
|
|
| Zitat von SkunkyVillage
| Zitat von Floder
Exakt.
Ich nutze das schon seit gefühlten 100 Jahren auf meiner XBOX1, daher kommt das (xbox media center).
Allerdings ist das irgendwann mal eigenständig geworden und ist im Moment wohl das beste Mediacenter.
Ergo nutz deine amazon.com Gutscheine und kauf dir für $99 so ein Teil, bügel xbmc drauf und fertig.
| |
Ich nutz es auf der PS3.
| |
Ich dachte das geht nicht? Erzähl mal!
|
|
|
|
|
|
|
| Zitat von igor]2
|
Code: |
extern "C"
{
#include "c-header.h"
} |
|
| |
danke, aber
| Zitat von flying sheep [muss ich nen bisher nicht vorhandenen] header schreiben? wenn ja: geht das überhaupt, wenn die dinger lokal deklariert sind, oder muss ich dann auch die c-datei ändern? | |
|
|
|
|
|
|
|
| Zitat von Floder
| Zitat von SkunkyVillage
| Zitat von Floder bügel xbmc drauf und fertig.
| | Ich nutz es auf der PS3. | | Ich dachte das geht nicht? Erzähl mal! | | ich rat mal:
geohots customfirmware drauf und ab geht die luzi?
|
|
|
|
|
|
|
|
|
|
|
Aber alles hässlich
|
|
|
|
|
|
|
Ja, deswegen. Da musste ich gleich an euch denken!
|
|
|
|
|
|
|
Eine Kommilitonin hat mich grad gefragt, und ich wusste keine Antwort: Wenn man in Java folgendes macht:
|
Code: |
String foo = "The quick brown fox jumps over the lazy dog.";
String bar = "The quick brown fox jumps over the lazy dog."; |
|
Zeigen dann foo und bar auf den gleichen Speicherbereich?
|
|
|
|
|
|
|
Kann ich mir nicht vorstellen. Ich kann mir nicht vorstellen dass das überhaupt eine Sprache so macht.
|
|
|
|
|
|
|
Auf ihrem Notizblatt steht das aber, deshalb habe ich die Vermutung dass ein Prof das zumindest angedeutet hat. Auch wenn das ziemlich unlogisch ist.
|
|
|
|
|
|
|
Tatsache, diese FAQ erklärt wie und warum Java das so macht. Sachen gibts.
|
|
|
|
|
|
|
Wahrscheinlich hat se einfach so viel mitgeschrieben, dass se gar nicht gecheckt hat wovon der Prof eigentlich gesprochen hat.
|
|
|
|
|
|
|
Na danke, nu steh ich als der Dumme da! Hast du toll gemacht!
|
|
|
|
|
|
|
|
|
|
|
internalisierte strings halt. da die immutable sind, gibts da ja auch keine probleme.
mein prob:
ich hab folgende c-structs. wie sieht jetzt ein header-filer oregen.h aus, das die für meinen c++-code bereitstellt?
|
Code: |
struct ore_record {
char * name;
short block_id;
short rounds;
short min_depth;
short max_depth;
short size;
};
static const struct ore_record ore_list[] = {
{ "Coal", BLOCK_COAL, 20, 0, 128, 16 },
{ "Iron", BLOCK_IRON, 20, 0, 64, 8 },
{ "Gold", BLOCK_GOLD, 2, 0, 32, 8 },
{ "Redstone", BLOCK_REDSTONE, 8, 0, 16, 7 },
{ "Diamond", BLOCK_DIAMOND, 1, 0, 16, 7 },
{ "Lapis", BLOCK_LAPIS, 1, 0, 32, 7 },
}; |
|
und muss ich die c-datei modifizieren (also ein #include oregen.h reinschreiben), damit das dann funzt, oder brauch ich nur in meinem c++-code zu includen?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von flying sheep am 21.01.2011 13:55]
|
|
|
|
|
|
Das wusste im übrigen sogar ich.
|
|
|
|
|
|
|
| Zitat von flying sheep
internalisierte strings halt. da die immutable sind, gibts da ja auch keine probleme.
mein prob:
ich hab folgende c-structs. wie sieht jetzt ein header-filer oregen.h aus, das die für meinen c++-code bereitstellt?
|
Code: |
struct ore_record {
char * name;
short block_id;
short rounds;
short min_depth;
short max_depth;
short size;
};
static const struct ore_record ore_list[] = {
{ "Coal", BLOCK_COAL, 20, 0, 128, 16 },
{ "Iron", BLOCK_IRON, 20, 0, 64, 8 },
{ "Gold", BLOCK_GOLD, 2, 0, 32, 8 },
{ "Redstone", BLOCK_REDSTONE, 8, 0, 16, 7 },
{ "Diamond", BLOCK_DIAMOND, 1, 0, 16, 7 },
{ "Lapis", BLOCK_LAPIS, 1, 0, 32, 7 },
}; |
|
und muss ich die c-datei modifizieren (also ein #include oregen.h reinschreiben), damit das dann funzt, oder brauch ich nur in meinem c++-code zu includen?
| |
Du kannst in deinem c++ Code weiterhin C-Structs nutzen. Einfach die Header-Datei die die structs definiert includen und fertig.
Zumindest glaube ich das. Hoffentlich passiert mir jetzt hier kein Trigger...
|
|
|
|
|
|
|
ok. die structs sind in oregengui/oregen/oregen.c definiert
meine dateien sind oregengui/oregengui.cpp, oregengui/oregengui.h und oregengui/oregen.h (damit ich nicht an den quellen von oregen selber rumpfuschen muss)
wie kann ich meinem programm jetzt sagen: hol dir die in oregen.h deklarierten structs und die funktion, schlag die definition in oregen/oregen.c nach und benutz das zeug?
und wie muss ich die oben angegebenen structs in die headerdatei schreiben? mit oder ohne []? mit welchen keywörtern?
|
|
|
|
|
|
|
Das ist jetzt etwas verwirrend...
Also prinzipiell sind structs in C als auch C++ 1:1 verwendbar. Einziger Vorteil in C++ ist, dass du das Schlüsselwort typedef weglassen kannst.
Das was du oben gezeigt hast, ist als erstes die Definition eines structs. Soll heißen, wie sieht es aus, welche Felder hat es und von welchem Typ sind sie.
Das zweite in deinem Code-Block ist dann die initialisierung eines Arrays von 6 ore_records.
Beides kannst du so einfach übernehmen. Um in deiner Software jetzt an die structs ranzukommen, brauchst du natürlich eine Datei in der die Definitionen für die structs stehen sowie deren Initialisierung. Ob du diese jetzt in einer .h Datei hast (was sinnvoll wäre, da es sich ja vermutlich um eine Art Konstanten handelt) oder in einer .c Datei ist erstmal egal. Prinzipiell kannst du jede beliebige Datei mittesl #include "blubb" includen. Bei .h Dateien kann man davon ausgehen, dass das so gewünscht ist. Wenn natürlich die ganzen initialisierungen in der .c Datei stehen, wird das mit dem includen hässlich bis unmöglich (wenn dort nämlich neben den structs noch andere Funktionen etc. drinstehen).
Dann musste halt eine header Datei selber basteln die alle structs die du brauchst enthält. Da kannste dann nicht nur die definitionen sondern auch gleich entsprechend initialisieren.
Hoffe das hab ich jetzt richtig aufgenommen
|
|
|
|
|
|
|
Ich stelle grad fest, dass ich etwas unentspannt bin. Unlässig quasi. Entsaftet. Ermattet.
Das Wochenende kommt wie gerufen \o/
|
|
|
|
|
|
|
| Zitat von GH@NDI Wenn natürlich die ganzen initialisierungen in der .c Datei stehen, wird das mit dem includen hässlich bis unmöglich (wenn dort nämlich neben den structs noch andere Funktionen etc. drinstehen).
Dann musste halt eine header Datei selber basteln die alle structs die du brauchst enthält. Da kannste dann nicht nur die definitionen sondern auch gleich entsprechend initialisieren. | | ja, jetzt hast du mein problem beschrieben. wie oben gesagt, sind die definitionen/initialisierungen in der c-datei, die nicht von mir stammt. wenn minecraft geupdated wird, wird der autor dieses programms die 2. struct anpassen (neue zeilen ins array hauen), und mein programm soll einfach mit der geupdateden c-datei zusammen kompiliert werden und es läuft.
bisher findet er keine deklaration von ore_list. es sieht ca. so aus (zum testen):
oregengui.cpp:
|
Code: |
#include "oregengui.h"
extern "C" {
#include "oregen.h"
}
OreGenGui::OreGenGui() {
setWindowTitle(ore_list[0].name);
} |
|
oregen.c: s.o.
oregen.h:
|
Code: |
#ifndef OREGENGUI_H
#define OREGENGUI_H
int update_all_chunks(char, short, struct options);
struct ore_record;
static const struct ore_record ore_list[];
#endif |
|
/e: die c-datei kann ich nicht einfach so includen, weil sie, wie meine gui, eine main() enthält.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von flying sheep am 21.01.2011 16:34]
|
|
|
|
|
|
Dann bleibt dir nur, nach jedem update dann auch selbst wieder dran zu basteln. Kannst dir natürlich auch einfach ein Script schreiben, dass dir aus den von minecraft kommenden .c einfach alle für dich wichtigen struct-Infos rauszuholen und in eine eigene .h zu packen.
|
|
|
|
|
|
|
|
|
|
|
Was macht das Teil genau?
|
|
|
|
|
|
|
Neue Knoepfe im Bus.
oberer, unbeschriftet: Halteanforderung.
unterer: "Alarm".
Umgeben von Idioten...
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |