Kezdőoldal » Számítástechnika » Programozás » Ha a C++ szabvány szerint...

Ha a C++ szabvány szerint minden C++ program forráskódjában szerepelnie kell main függvénynek, akkor ez azt jelenti, hogy az arduino C++ nem szabványos?

Figyelt kérdés
Ott ugyanis setup() és loop() függvény van main helyett.

2020. okt. 28. 22:19
 1/9 anonim ***** válasza:
40%

Használ main-t a C++.


Azzal kezdődik.


int main(void)

{

itt van a setup, a loop és miegyebek.

}


Így áll össze. Csak, hogy ez rejtve van. Szóval Te magában a main-ben dolgozol. ;).

2020. okt. 28. 22:36
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
24%
Bocsánat. :D Használ main-t az Arduino* :D
2020. okt. 28. 22:36
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
32%
+ rengeteg más beállítás el van rejtve előled. Ha nem így lenne, akkor úgy kezdenéd a projectet, hogy már ott van 500 sor megírva. :D
2020. okt. 28. 22:41
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
20%
Töröld ki az #include <Arduino.h> sort aztán majd meglátjuk volt-e benne main:) Megsúgom volt, csak előre megírták neked.
2020. okt. 29. 04:16
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
6%

Nem kell, hogy tartalmazzon.

A C(++) annyit köt ki, hogy a main függvény a program belépési pontja. Nem írja elő, hogy kell ilyennek lenni. Az ehhez hasonló laza szabályok miatt is annyira erős a C++. Ha a programozó tudja, mit szeretne, akkor a nyelv nem állja útját, hogy megtegye. Arduino esetén pedig nem beszélhetünk klasszikus értelemben vett belépési pontról. Pontosabban: két belépési pont van, a setup, és a loop. A setup az, amelyik leginkább hasonlít a main-re, ugyanis az fut le, amikor a program elindul. A loop pedig egy eseményvezérelt belépési pont, az aktiváló eseménye pedig a setup, vagy maga a loop befejeződése.

Zárójeles megjegyzés: az Arduino forrásban nincs #include <Arduino.h>, mégis remekül lefut. Mint ahogy misztikus, rejtett main függvény sincs. Ne keverjük össze az előre megírt függvénykönyvtárakkal, amik tényleg tartalmaznak előre megírt kódot, külön függvényekben. De nem fognak képzeletben odatenni egy int main(void)-ot. ;)

2020. okt. 29. 08:10
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:
71%
Rosszul tudod utolsó. Arduinoba is a main a belépési pont csak el van rejtve. :)
2020. okt. 29. 14:20
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:
Ha nemis main, akkor valami más belépési pontnak kell lennie. AVR-en nem tudom hogy van, de STM32-n (ARM) megtudod nézni a startup kodba. A "main" név egyáltalán nem standard, lehet pl wmain, WinMain a wim32 appokhoz, stb. De egy belépési pont kell.
2020. okt. 29. 14:28
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

"

From what I understand, the Arduino IDE does use main(), it's just hidden. The actual code it generates is something like this:


int main(void)

{

init();

setup();

for (;;) { loop(); }

return 0;

}

"

[link]


Ebből nekem az jön le, hogy maga az AVR-re (ha erről beszélünk) portolt fordító generál egy ilyen kódot a háttérben.

2020. okt. 30. 04:59
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:

..Na igen, ezt konkrétan az Arduino IDE csinálja, nem is a fordító.


"The most basic of arduino sketches contains definitions for two functions, setup and loop. To be able to actually compile that, the IDE adds an #include header at the top and a main function at the bottom of the file. This is generally a neat idea, but it’s done on a copy of the file, which means that any compilation errors will be detected in the copy, and not the original one."

[link]

(A "Step 1" résznél.)


Elvileg megkerülhető ezzel:

1) #undef main // removes the existing main from the compilers memory

2) call init(); as first step in main()

[link]


A lényeg, hogy igen, van benne main().

2020. okt. 30. 15:53
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!