Forum: Mikrocontroller und Digitale Elektronik eigene int main in Arduino IDE


von Michael S. (misax)


Lesenswert?

hallo;
wenn man ganz "normal" die Arduino IDE benutzt mit void setup und void 
loop wird ja die int main(void) aus der main.cpp aufgerufen, die dann 
setup() und loop() aufruft.
Jetzt kann man ja statt void setup und void loop selber eine int main() 
eingeben in die Arduino IDE.
Frage: wie wird denn das gesteuert dass dann die eigene int main 
aufgerufen wird und nicht die aus der main.cpp ?

von EAF (Gast)


Lesenswert?

Das tut der Arduino Builder.

Hier nachzulesen, wie sich das abspielt:
https://arduino.github.io/arduino-cli/0.20/sketch-build-process/

von Michael S. (misax)


Lesenswert?

Auf der angegebenen Seite wird die main.cpp mit keiner Silbe erwähnt.

von EAF (Gast)


Lesenswert?

Von mir aus...
Dennoch ist es der Builder, welcher prüft, ob du eine eigene main() 
gebaut hast und dementsprechend agiert.

Wenn du wissen möchtest wie er das genau tut, müsstest du wohl in seinen 
Quellcode schauen.
Auch der liegt öffentlich aus.

von Michael S. (misax)


Lesenswert?

weiss jemand wo genau der Code des Builders abgespeichert ist ?

Also der Builder prüft ob der eigene Sketch eine int main() hat und 
verwendet diese, ansonsten verwendet er die int main() aus der main.cpp 
und hängt den Code des eigenen Sketches hintendran ?
Die main.cpp kann man ja ganz leicht selber abändern. Wo ist denn der 
Code des Builders gespeichert ? den müßte man ja ebenfalls leicht ändern 
können oder ?

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Michael S. schrieb:
> Wo ist denn der Code des Builders gespeichert ? den müßte man ja
> ebenfalls leicht ändern können oder ?

Du musst nichts ändern, wenn die main-Funktion in dem c++ Unterbau als 
weak definiert wurde.

Alternativ nennst du deine main-Funktion eben my_main() und rufst die 
einfach im setup() selber auf. Oder eben im loop()...
Funktioniert, weil deine my_main() hoffentlich auch nie zurückkehrt ;)
mfg mf

von Michael S. (misax)


Lesenswert?

Ich möchte einfach nur ganz genau die Stelle sehen, an der entschieden 
wird, ob die eigene int main oder die vom main.cpp genommen wird. weiss 
jemand wo genau man diese Abfrage sehen kann ?

von EAF (Gast)


Lesenswert?

Michael S. schrieb:
> Wo ist denn der
> Code des Builders gespeichert ? den müßte man ja ebenfalls leicht ändern
> können oder ?
Warum sollte man das tun?

PS:
Den Code findest du auf github

von J. S. (jojos)


Lesenswert?

der Code steht nicht in der ArduinoIDE, sondern im Core den man 
verwendet. Beim AVR zB:
https://github.com/arduino/ArduinoCore-avr/blob/42fa4a1ea1b1b11d1cc0a60298e529d37f9d14bd/cores/arduino/main.cpp#L33-51

von EAF (Gast)


Lesenswert?

Achim M. schrieb:
> wenn die main-Funktion in dem c++ Unterbau als
> weak definiert wurde.

Das scheint mir nicht der Fall zu sein.
Zumindest finde ich es nicht im Core
https://github.com/arduino/ArduinoCore-avr/blob/9f8d27f09f3bbd1da1374b5549a82bda55d45d44/cores/arduino/main.cpp

Da ist einiges als weak deklariert, auch im weiteren Umfeld (den anderen 
Dateien).
Aber main(), sehe ich nicht

von Michael S. (misax)


Lesenswert?

Kann jemand den Source-Code finden und posten, in dem die Abfrage steht: 
wenn die IDE eine eigene int main enthält, verwende diese, ansonsten 
verwende die int main aus der main.cpp ?

von J. S. (jojos)


Lesenswert?

das ist ja im include des Compilers bzw. der Runtime Lib weil main im 
Startup Code aufgerufen wird.

von J. S. (jojos)


Lesenswert?

Michael S. schrieb:
> Kann jemand den Source-Code finden und posten,

da irgendwo in den 462 Treffern:
https://github.com/arduino/arduino-cli/search?q=main

von Michael S. (misax)


Lesenswert?

hat jemand Lust die Stelle zu finden, an der die Abfrage ist, ob eigene 
int main oder die aus der main.cpp ?

von Stefan F. (Gast)


Lesenswert?

Solange nicht klar ist, welcher Core konkret gemeint ist, macht es 
keinen Sinn, mit der Suche zu beginnen.

Der Richtige Ansatz wurde ja bereits genannt:

J. S. schrieb:
> da irgendwo in den 462 Treffern:
> https://github.com/arduino/arduino-cli/search?q=main

von Michael S. (misax)


Lesenswert?

vielleicht findet sich ja einer der genau weiss wo die Abfrage zu finden 
ist...

von J. S. (jojos)


Lesenswert?

bau doch erstmal ein int main() in ein .ino oder .cpp ein und gucke was 
der Builder so meldet.
Zumindest beim AVR muss der Builder das managen, zweimal main würde 
einen Linkerfehler geben. Und wenn es so ist, dann ist es doch egal wo 
und wie der Builder das macht.

: Bearbeitet durch User
von Norbert (Gast)


Lesenswert?

Michael S. schrieb:
> Frage: wie wird denn das gesteuert dass dann die eigene int main
> aufgerufen wird und nicht die aus der main.cpp ?

Vermutlich ist die ›eingebaute‹ als weak deklariert. Wenn keine 
›bessere‹ vorhanden ist, dann wird die per default genommen.

von Michael S. (misax)


Lesenswert?

Ich möchte gar nicht rumsuchen oder vermuten oder Vermutungen anderer 
nachspüren sondern frage einfach ob es einer ganz genau weiss und mir 
sagen kann.

Beitrag #7330029 wurde von einem Moderator gelöscht.
von EAF (Gast)


Lesenswert?

J. S. schrieb:
> bau doch erstmal ein int main() in ein .ino oder .cpp ein und gucke was
> der Builder so meldet.

Getestet, soweit erstmal möglich:
So wie es aussieht wird die originale main.cpp auch kompiliert, wenn man 
eine eigene main() baut.

Es kann also gut sein, dass dich weder beim Preprocessor, noch beim 
Builder irgendwas davon findet.
Und doch stört den Linker das kein bisschen.

Diese Indizien sprechen für "weak" (in welcher Form auch immer)
Und dagegen, dass der Builder da irgendwas steuert.

von EAF (Gast)


Lesenswert?

EAF schrieb:
> dich
sich

von Dr. Watson (Gast)


Lesenswert?

Michael S. schrieb:
> Ich möchte gar nicht rumsuchen

... sondern du möchtest dass dir gebratene Tauben in den
Mund fliegen oder auf dem Silbertablett serviert werden.

Mach weiter so, das ist das Salz in der Suppe hier im Forum.

von Norbert (Gast)


Lesenswert?

Michael S. schrieb:
> Ich möchte gar nicht rumsuchen oder vermuten oder Vermutungen
> anderer
> nachspüren sondern frage einfach ob es einer ganz genau weiss und mir
> sagen kann.

Du meine Güte, ist das denn so schwer?

---
1
 x1.cpp
2
#include <iostream>
3
int __attribute__((weak)) main(void) {
4
    std::cout << "weak";
5
    return 0;
6
}
---
1
 x2.cpp
2
#include <iostream>
3
int main(void) {
4
    std::cout << "strong";
5
    return 0;
6
}
---
1
g++ -Wall -Wextra -pedantic  -o "x" x1.cpp x2.cpp

Was erscheint beim Aufruf: strong.
Wenn man im x2.cpp die main umbenennt und erneut kompiliert:
Was erscheint beim Aufruf: weak.

von Stefan F. (Gast)


Lesenswert?

Michael S. schrieb:
> Frage: wie wird denn das gesteuert dass dann die eigene int main
> aufgerufen wird und nicht die aus der main.cpp ?

Michael S. schrieb:
> weiss jemand wo genau der Code des Builders abgespeichert ist ?

Michael S. schrieb:
> Ich möchte einfach nur ganz genau die Stelle sehen

Michael S. schrieb:
> Kann jemand den Source-Code finden und posten

Michael S. schrieb:
> hat jemand Lust die Stelle zu finden

Michael S. schrieb:
> vielleicht findet sich ja einer der genau weiss wo die Abfrage zu finden
> ist...

Michael S. schrieb:
> Ich möchte gar nicht rumsuchen oder vermuten oder Vermutungen anderer
> nachspüren sondern frage einfach ob es einer ganz genau weiss und mir
> sagen kann.

Sag mal, merkst du nichts mehr? Bewege deinen faulen Hintern selbst!

von Michael S. (misax)


Lesenswert?

Also wird die eigene int main kompiliert und die main.cpp wird 
hintendrangehängt und mitkompiliert ? und die main.cpp ist "weak" und 
kann deshalb überschrieben werden ? das scheint mir jetzt mal ein Ansatz 
zu sein. aber hier ist meine main.cpp, da ist doch nichts "weak" an der 
int main oder ?
1
#include <Arduino.h>
2
3
// Declared weak in Arduino.h to allow user redefinitions.
4
int atexit(void (* /*func*/ )()) { return 0; }
5
6
// Weak empty variant initialization function.
7
// May be redefined by variant files.
8
void initVariant() __attribute__((weak));
9
void initVariant() { }
10
11
void setupUSB() __attribute__((weak));
12
void setupUSB() { }
13
14
int main(void)
15
{
16
  init();
17
18
  initVariant();
19
20
#if defined(USBCON)
21
  USBDevice.attach();
22
#endif
23
  
24
  setup3();
25
    
26
  for (;;) {
27
    loop();
28
    if (serialEventRun) serialEventRun();
29
  }
30
        
31
  return 0;
32
}

von Norbert (Gast)


Lesenswert?

Michael S. schrieb:
> aber hier ist meine main.cpp, da ist doch nichts "weak" an der
> int main oder ?

Die Interne ist ›weak‹, deine ist automatisch ›strong‹.

von Michael S. (misax)


Lesenswert?

danke Norbert, du bist der einzige der meine Frage wirklich beantworten 
kann. Jetzt aber noch: wieso ist die interne automatisch weak ? wo ist 
das vermerkt ?

hängt das mit dieser Zeile zusammen ?
1
// Declared weak in Arduino.h to allow user redefinitions.
2
int atexit(void (* /*func*/ )()) { return 0; }

: Bearbeitet durch User
von EAF (Gast)


Lesenswert?

Norbert schrieb:
> Die Interne ist ›weak‹,

Das ist dort aber nicht zu sehen!

von Norbert (Gast)


Lesenswert?

Also ich habe den Arduino Code nicht, deshalb kann ich nicht 
nachschauen. Aber falls dieser Mechanismus benutzt wird, dann müsste 
irgendwo im Arduino Code eine ›main‹ als ›weak‹ definiert sein.

Nur der Vollständigkeit halber:
Es gibt noch eine weitere Möglichkeit. Das gesamte Arduino Gelumpe 
müsste kompiliert und in ein Archiv gesteckt werden (auch die interne 
›main‹).

Der Linker würde sich dann nur die Symbole aus dem Archiv holen welche 
NICHT in deinem Code zu finden wären.

von Michael S. (misax)


Lesenswert?

ich habe den code meiner main.cpp doch gepostet ! Kann man dem entnehmen 
dass die int main weak ist ? eher nicht oder ? kann das ausserhalb 
irgendwo angegeben sein ?

von EAF (Gast)


Lesenswert?

Norbert schrieb:
> Also ich habe den Arduino Code nicht, deshalb kann ich nicht
> nachschauen.
Das kann ich ändern.
https://github.com/arduino/ArduinoCore-avr

Norbert schrieb:
> dann müsste
> irgendwo im Arduino Code eine ›main‹ als ›weak‹ definiert sein.
Dachte ich auch.
Aber noch nicht gefunden.

Norbert schrieb:
> Es gibt noch eine weitere Möglichkeit. Das gesamte Arduino Gelumpe
> müsste kompiliert und in ein Archiv gesteckt werden (auch die interne
> ›main‹).
Das geschieht allerdings!
Alle *.o Dateien werden in eine *.a gestopft

Und dann mit der *.ino.cpp.o gelinkt:
1
"E:\\Programme\\arduino/portable/avr-gcc/avr-gcc-11.3.0_mingw32_binutils2.38/bin/avr-gcc" -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "E:\\temp\\Arduino/sketch_jan27a.ino.elf" "E:\\temp\\Arduino\\sketch\\sketch_jan27a.ino.cpp.o" "E:\\temp\\Arduino/core\\core.a" "-LE:\\temp\\Arduino" -lm

von Norbert (Gast)


Lesenswert?

Na da haben wir's doch. Hat auch gar nicht weh getan. ;-)

von Michael S. (misax)


Lesenswert?

hallo Norbert und EAF, ich bin nicht so ein Profi wie ihr. Was kann dem 
jetzt entnehmen ? Wie wird die interne main auf weak geschaltet ?

von Wolfgang (Gast)


Lesenswert?

Michael S. schrieb:
> Ich möchte einfach nur ganz genau die Stelle sehen, an der entschieden
> wird, ob die eigene int main oder die vom main.cpp genommen wird. weiss
> jemand wo genau man diese Abfrage sehen kann ?

Wozu?
Reicht es dir nicht, wenn du weißt, das deine eigene main() verwendet 
wird - egal warum?

von Norbert (Gast)


Lesenswert?

Michael S. schrieb:
> hallo Norbert und EAF, ich bin nicht so ein Profi wie ihr. Was
> kann dem
> jetzt entnehmen ? Wie wird die interne main auf weak geschaltet ?

Gar nicht.
Es gibt die oben zuerst gezeigte Möglichkeit das Ganze über ›weak‹ zu 
lösen, das macht Arduino anscheinend nicht.
Oder über die später genannte und deutlich umständlichere Archiv 
Methode.  Es deutet alles darauf hin, das Arduino die letztere 
Lösungsmöglichkeit nutzt.

von EAF (Gast)


Lesenswert?

Norbert schrieb:
> die oben zuerst gezeigte Möglichkeit

Anfangs war ich davon ausgegangen, dass der Builder das steuert.
z.B. durch nicht mit kompilieren der main.cpp.

Somit durfte ich eine Erkenntnis einsammeln.
Meinen Dank.

von Michael S. (misax)


Lesenswert?

So vielen Dank jetzt weiss ich Bescheid und habe neue Dinge gelernt die 
mich interessieren mich mit ihnen näher zu beschäftigen.
Dann bedanke ich mich vielmals für die sehr qualifizierten Beiträge von 
EAF und Norbert.

von fahrradfahrer (Gast)


Lesenswert?

Und ich habe gelernt, dass man mit Fragen welche nicht beantwortet 
werden können, das Ego von Leuten welche sich für sehr bewandert halten 
kränken kann. Und diese dann die Frage als sinnlos deklarieren oder was 
auch immer.

von Stefan F. (Gast)


Lesenswert?

Hier kollidieren halt die Bedürfnisse unterschiedlicher Menschen 
aufeinander:

- Leute, die etwas zügig ans Laufen bringen wollen/müssen
- Leute, die sich nach Belieben in einzelne Details verstricken dürfen 
und woanders schlampig sind (z.B. weil Hobby)
- Leute, die Details untersuchen müssen
- Leute, die fleißig sind
- Leute, die zu faul sind, selbst zu arbeiten

Das es dabei zu Rangeleien kommt ist völlig natürlich.

von Michael S. (misax)


Lesenswert?

Wenn ich an einem Projekt arbeite und eine konkrete Frage habe dann 
stelle ich diese Frage in diversen Foren und will so schnell wie möglich 
die richtige Antwort haben um an meinem Projekt weiterarbeiten zu 
können. Da will ich keine Aufforderungen, mir die Antwort selbst zu 
suchen, oder Vermutungen, die mich in die Irre führen. Da sollen 
eigentlich nur die Leute antworten, die die Antwort ganz genau wissen 
oder zumindest einen sehr begründeten Ansatz zum Weiterprobieren haben. 
So haben ja schließlich die Beiträge von Norbert und EAF genau zu der 
von mir gesuchten Lösung geführt. Ich will doch keine Zeit verplempern 
und irgendwelchen Aufforderungen nachgehen mir irgendwo selbst die 
Lösung zu suchen. Auf die eigentliche Lösung wäre ich ohne Norbert und 
EAF nie gekommen. Das Leben ist kurz.

Schnell wirst du alt, eben warst du noch jung.
Jetzt lachst du noch, doch schon bald bist du Dung.

von EAF (Gast)


Lesenswert?

Michael S. schrieb:
> ....

arrogante ***

von Michael S. (misax)


Lesenswert?

was ist denn daran arrogant ? wir sind doch hier nicht im Kindergarten. 
Wer Fragen hat stellt sie und wer die Antwort hat sagt sie. Alles andere 
ist doch Blödsinn.

von EAF (Gast)


Lesenswert?

Du hast keinerlei Recht bestimmen zu können was hier irgendwer sagt!
Null!

Dein Verhalten zeigt starke egomanische und narzisstische Züge.

von Michael S. (misax)


Lesenswert?

Normales Verhalten ist doch: jemand stellt eine Frage und wer die 
Antwort weiss oder eine begründete Ahnung hat wo sie zu finden ist teilt 
das mit. Was ist denn das für ein seltsames Verhalten, auf eine Frage zu 
antworten mit: suchs dir selber, warum willst du das überhaupt wissen 
und so weiter und so fort. das ist doch total unerwachsen und kann man 
sich doch sparen. Wer eine Frage liest und dazu keine Antwort weiss kann 
sich doch dem Thread fernhalten. Wie viel Langeweile muss man haben um 
stattdessen jede Menge Senf der Frage hinzuzufügen.

von fahrradfahrer (Gast)


Lesenswert?

EAF schrieb:
> Dein Verhalten zeigt starke egomanische und narzisstische Züge.

Ja diese komischen Menschen die immer Fragen stellen und eine Antwort 
auf genau diese Frage erwarten. Und kein Interesse an an sinnlosen 
Palaver haben welches ihn nicht weiterhilft.

Wann ist die Gesellschaft nur so abgedriftet, dass die Leute so eine 
hohe Erwartungshaltung bei zwischenmenschlicher Kommunikation bekommen 
haben.

von EAF (Gast)


Lesenswert?

Michael S. schrieb:
> ...

Ich rate zu einer Therapie, zumindest erstmal zu einer Anamnese, welche 
dann eine fundierte Diagnose ermöglicht.

von Stefan F. (Gast)


Lesenswert?

Michael S. du verwechselst diese öffentliche Diskussions-Plattform mit 
einer Professionellen Beratung durch ein Ingenieurs-Büro.

Die meisten Leute sind hier, um sich zu unterhalten, und nebenbei etwas 
zu lernen. Ich würde das mal mit einer Kneipe vergleichen, nur halt 
remote statt vis-à-vis.

Professionelle Arbeit kannst du haben, aber nicht kostenlos. Du bist 
nämlich nicht der einzige, der mit seiner Arbeit das Leben finanzieren 
muss.

von Gerd (Gast)


Lesenswert?

Wie ist eigentlich jetzt das Ergebnis zur Ursprungsfrage dieses Threads?
Wo wird jetzt entschieden, welch "main" verwendet wird?
Das ist der Unterschied von Stack-Overflow zum Mikrocontrollernetz: Ein 
vernünftige Zusammenfassung gibt es nirgends.

von Stefan F. (Gast)


Lesenswert?

Gerd schrieb:
> Das ist der Unterschied von Stack-Overflow zum Mikrocontrollernetz: Ein
> vernünftige Zusammenfassung gibt es nirgends.

Dann stelle die Frage halt bei Stack-Overflow und höre auf zu nerven.

Beitrag #7330814 wurde von einem Moderator gelöscht.
von EAF (Gast)


Lesenswert?

Gerd schrieb:
> Wie ist eigentlich jetzt das Ergebnis zur Ursprungsfrage dieses Threads?

3 Möglichkeiten diskutiert
2 davon ausgeschlossen

Nimm die Übriggebliebene.

von DerEinzigeBernd (Gast)


Lesenswert?

Michael S. schrieb:
> Wer Fragen hat stellt sie und wer die Antwort hat sagt sie. Alles andere
> ist doch Blödsinn.

Nein. Hier sind etliche Leute unterwegs, die die Antwort bestens kennen, 
aber den Fehler begehen, anzunehmen, daß der Fragende sich für das Thema 
interressiert und etwas lernen möchte. Die antworten daher auf eine Art 
und Weise, die dem Fragesteller ermöglicht, selbst herauszufinden, was 
er wissen will, indem sie ihn auf die richtige Fährte locken. Hätte der 
Fragesteller Interesse am Thema, würde er mit den Hinweisen selbst 
nachsehen und damit Dinge lernen, auch Dinge, die über die ursprüngliche 
Fragestellung hinausgehen.

Der Fehler ist wie gesagt, davon auszugehen, daß der Fragesteller sich 
überhaupt für das Thema interessiert und auch noch lernwillig ist.

Das ist aber aus der Mode gekommen, warum etwas lernen, wenn man auch 
irgendwo im Internet nachsehen kann? Wieso muss man überhaupt irgendwas 
wissen, etwas können, oder gar sich für etwas interessieren? Die 
arroganten alten Säcke in dem doofen Forum sollen doch einfach nur die 
konkrete Frage beantworten!

Wir alten Säcke sollten uns ernsthaft Sorgen um unsere Rente machen, 
denn diese Generation Schlaffsacklusche wird die sein, die hoffentlich 
noch Beiträge in die Rentenkasse einzahlt ...

von Michael S. (misax)


Lesenswert?

Wenn ich eine konkrete Frage habe dann möchte ich doch eine Antwort auf 
meine Frage bekommen und nicht oberlehrerhaft rumkommandiert werden wo 
ich gefälligst nachlesen und mir die Antwort selber erarbeiten soll. 
Warum meinen denn einige die anderen erziehen zu müssen ? Zum Glück gibt 
es ja genug sachliche Antworten die einem dann doch weiterhelfen.

Beitrag #7330967 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

Wenn der Michael so weiter macht, wird er noch sehr viel Erfahrung mit 
Bewerbungsverfahren machen.

von DerEinzigeBernd (Gast)


Lesenswert?

Michael S. schrieb:
> Wenn ich eine konkrete Frage habe dann möchte ich doch eine Antwort auf
> meine Frage bekommen und nicht oberlehrerhaft rumkommandiert werden wo
> ich gefälligst nachlesen und mir die Antwort selber erarbeiten soll.

Wenn so klar zu erkennen ist, daß Du die Antwort auf Deine Frage gar 
nicht verstehen kannst, ist es sinnlos, Dir eine präzise Antwort zu 
geben.

Da Du Dich für das Thema überhaupt nicht interessierst, hat Du hier also 
schön viel Lebenszeit verschwendet, vonn all' denen, die Dir helfen 
wollten, und Deine eigene letztlich auch.

Spiel halt irgendwelche Videospiele, oder fang mit dem Rauchen an, aber 
lass die Finger von Elektronik.

von FahrerVomFahrrad (Gast)


Lesenswert?

Michael S. schrieb:
> Warum meinen denn einige die anderen erziehen zu müssen ? Zum Glück gibt
> es ja genug sachliche Antworten die einem dann doch weiterhelfen.

Also ich habe die Vermutung dass sie einfach dumm sind, und gleichzeitig 
eingebildet und arrogant, also können sie die Frage nicht beantworten, 
wollen aber trotzdem ihren Senf dazugeben.

Also wird halt so komisches Palaver gehalten dass man es sich doch 
selbst erarbeiten soll, und anhand der teilweise fehlerhaften Vorschläge 
ist auch ersichtlich dass die von oben herab labernden Leute keine 
Ahnung haben.

Ich fühle mich sehr gut unterhalten vielen Dank.

von Stefan F. (Gast)


Lesenswert?

Ich persönlich finde Hilfe zur Selbsthilfe immer noch besser, als gar 
keine Hilfe. Wenn es so verlaufen wäre, wie der Michael S. es sich 
erbittet, hätte er noch gar keine Antwort erhalten.

von Stefan F. (Gast)


Lesenswert?

So beantwortet ChatGPT deine Frage:

"
In der Arduino IDE wird standardmäßig die int main(void) aus der 
main.cpp aufgerufen, die dann setup() und loop() aufruft. Wenn man 
jedoch selbst eine int main() in die Arduino IDE eingibt, wird die 
main.cpp nicht mehr verwendet. Stattdessen wird die neue int main() 
verwendet, die man selbst erstellt hat. Dies wird durch das 
Überschreiben der main.cpp mit der neuen int main() erreicht.
"

Tja, sogar der intelligenteste Roboter der Welt kann dein Frage nicht 
zufriedenstellend beantworten.

Beitrag #7331032 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

Ich hake nochmal nach:

> Ich möchte einfach nur ganz genau die Stelle sehen, an der entschieden
> wird, ob die eigene int main oder die vom main.cpp genommen wird. weiss
> jemand wo genau man diese Abfrage sehen kann ?

Antwort von ChatGPT:

"
Die Abfrage, ob die eigene int main oder die von main.cpp verwendet 
wird, findet in der Regel nicht explizit statt.

Die Arduino IDE bietet die Möglichkeit, eigene Sketches (Programme) zu 
erstellen und diese hochzuladen. Wenn Sie einen Sketch erstellen, wird 
der Quellcode in die Arduino IDE eingefügt. Der Sketch wird dann 
übersetzt und auf den Arduino-Mikrocontroller hochgeladen. Wenn Sie eine 
eigene int main() in Ihrem Sketch haben, wird diese anstelle der int 
main(void) aus der main.cpp verwendet. Das Überschreiben der main.cpp 
mit der neuen int main() erfolgt automatisch,da die IDE den Sketch Code 
zusammenführt und auf den Controller hochlädt.

Die Abfrage, ob die eigene int main oder die von main.cpp verwendet 
wird, findet in der Regel beim Hochladen des Sketches statt. Wenn Sie 
den Sketch hochladen, wird dieser automatisch übersetzt und anschließend 
auf den Mikrocontroller hochgeladen.

Es gibt auch Fälle, in denen man eigene int main() in C++ Libraries 
verwenden kann, und diese dann in die Arduino IDE einbinden kann, und 
diese werden dann aufgerufen und nicht die main.cpp.

In jedem Fall werden die Abfragen und der Prozess, der dazu führt, dass 
die eigene int main verwendet wird, in der Regel automatisch durch die 
Arduino IDE durchgeführt und sind für den Anwender nicht sichtbar.
"

Bewerte die Antwort selbst.

Beitrag #7331046 wurde von einem Moderator gelöscht.
von EAF (Gast)


Lesenswert?

FahrerVomFahrrad schrieb im Beitrag #7331032:
> hatte
> letztendlich zur richtigen Lösung geführt.

Interessant daran ist, dass der TO keinen geistreichen Funken dazu 
beitragen konnte.
Die einzige Leistung: Fordern, Vorwürfe und Urteilen.
Und natürlich "Unbeliebt machen"

Beitrag #7331079 wurde von einem Moderator gelöscht.
Beitrag #7331084 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

FahrerVomFahrrad schrieb im Beitrag #7331084:
> Dafür von ihm etwas zu verlangen zu wollen ist doch eine
> sehr sonderbare Betrachtungsweise.

Davon war keine Rede. Er möchte aber, dass jemand jetzt für ihn ganz 
genau die Stelle im Quellcode von Arduino findet und erklärt, die dafür 
verantwortlich ist.

Das mache ich gerne, aber eben nicht kostenlos. Ich meine, ich kann Geld 
immer gut gebrauchen. Aber mein Wochenende opfere ich nur, wenn man mir 
dafür mehr bietet, als mein Chef. So wie sich der TO bisher verhalten 
hat, muss er allerdings noch erheblich was oben drauf legen, um mich zu 
motivieren.

Andererseits ist klar, dass er hier kostenlos abgreifen will. Also 
unterlasse ich es, hier ein Angebot zu machen.

Beitrag #7331103 wurde von einem Moderator gelöscht.
von EAF (Gast)


Lesenswert?

FahrerVomFahrrad schrieb im Beitrag #7331103:
> Gegenleistungen
Nee ...

Und wenn, dann in Form von Respekt, oder so ähnlich.
z.B. von der Sorte, die eine Kommunikation fruchtbar macht.
Gegeneinander ausspielen gehört nicht dazu:
> So haben ja schließlich die Beiträge von Norbert und EAF genau zu der
> von mir gesuchten Lösung geführt.
Das Lob fühlt sich etwas .... an.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan F. schrieb:
> sogar der intelligenteste Roboter der Welt kann dein Frage nicht
> zufriedenstellend beantworten.
Die konsequent richtige Antwort auf die Frage des TO ist: wenn du das 
Arduino-Framework verwenden willst, dann verwende es so, wie es dessen 
Entwickler vorgesehen haben. Sonst brauchst du hinterher nach ein paar 
Updates nicht herumjammern, dass dir der selbstgefrickelte Haufen auf 
den Kopf fällt.

Michael S. schrieb:
> ich habe den code meiner main.cpp doch gepostet ! Kann man dem entnehmen
> dass die int main weak ist ? eher nicht oder ? kann das ausserhalb
> irgendwo angegeben sein ?
Nur aus Interesse und weil mir noch niemand aus der Zielgruppe eine 
brauchbare Antwort gegeben hat: wo lernt man denn dieses Plenken?
* Plenken = unnötiges Leerzeichen vor dem Interpunktionszeichen
* https://de.wikipedia.org/wiki/Plenk


Und zur Info für die, die sich schwer tun, sich an ihren Usernamen zu 
erinnern:

Nur 1 Nutzername pro Thread. Siehe die strunzsimplen 
Nutzungsbedingungen.

Alle Posts mit den nachfolgenden Namen werden gelöscht.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.