Ez szegmentációs hiba vagy fordítási hiba?
#include <iostream>
using namespace std;
int main()
{
int &d=5;
cout << d;
}
Codeblocks-ban debugnál már hibát jelez, de akkor az fordítási hiba? Vagy mivel érvénytelen memóriacímre hivatkozik segmentation fault?
Fordítási hoba, mert helytelen a szintaxis:
test.cpp:11:8: error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’
11 | int &d=5;
| ^
Ezt dobja, amikor megpróbálod fordítani, nem hiszem, hogy nálad debug üzenetek lennének.
Fordítási hiba: akkor jelentkezik, amikor fordítod a programot.
Futás idejű hiba: elindítod a programot és csak akkor jelebtkezik, tehát a fordítás még sikeres.
Szegmentációs hiba az az, amit mondtál, de az futási időben keletkezik, ahhoz először olyan kód kell, ami lefordul. Pl. csinálsz egy pointer és beállítod mondjuk 5-re, majd megpróbálod használni. Gondolom ezt akartad te is, de pointer típust a *-gal csinálsz. Az & az adott változó memóriacímét adja vissza.
Build-nél jelentkezik, akkor az rendre fordítási hiba.
A Szemantikai hiba, az futó alkalmazás mellet derülhet ki, hogy pl. egy lista összes páratlan elemét törli a páros helyett. De, ha az a tervezett, akkor nyilván nem szemantikai hiba. Tervezés/Döntés kérdése az utóbbi.
Olvasd el újra. Ha tervezett a működés, és a vártat kapod, akkor nem szemantikai hibás. Ha ettől eltér, akkor igen.
Ezt fordítva fejtettem ki, lehet ez zavart meg.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!