Fwd: ESP32 zahada C

František Burian BuFran na seznam.cz
Neděle Červenec 16 14:44:43 CEST 2023


Zdravím,

  https://en.wikipedia.org/wiki/One_Definition_Rule

  V překladači gcc a v jazyce je multiple definition v linkeru undefined behavior, může si prostě vybrat kterou použije a to co vygeneruje kompilátor v druhé
verzi symbolu to skartuje. Je to z důvodu weak, nedokážu to popsat ale bez této vymoženosti by nešel napsat weak.

  Toto mimochodem bylo důvodem k zavedení namespace.

S pozdrvem,

  František Burian

Dne 16. 07. 23 v 14:22 Jaroslav Buchta napsal(a):
> Ted zkoumam nejaky kod, (nekoukejte na funkcnost, to ted neni dulezite) a nechapu, proc linkeru nevadi za nejakych okolnosti, ze jsou ve 2 souborech identicke
> globalni funkce. ESP-IDGF je 5.0.3
>
> Tak jak to je, se to bez reci prelozi.
>
> Pokud prejmenuju jednu funkci (init v souboru mcp9804_spy.c) tak vznikne chyba, kterou bych cekal i v predchozim stavu
>
> D:/tst/____/unity_fixture_test/components/temperature/mcp9804.c:37: multiple definition of `mcp9804_get_temperature';
> esp-idf/temperature/libtemperature.a(mcp9804_spy.c.obj):D:/tst/____/unity_fixture_test/components/temperature/mcp9804_spy.c:24: first defined here
>
> Kdyz ji prejmenuju jen v souboru mcp9804.c je to zase OK.
>
>
> Je to nejaka zamerna featura nebo cim to je? Jedine, co me napada, ze linker najde vsechny funkce ve prvnim modulu a tim padem se uz na druhy ani nediva, ale
> stejne nevim, jestli je to vlastnost, nebo chyba linkeru...
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list