arduino-libraries / Arduino_PortentaBreakout

GNU Lesser General Public License v2.1
10 stars 5 forks source link

Fix multiple definition errors when using library header in two different files #40

Closed maxgerhardt closed 1 year ago

maxgerhardt commented 1 year ago

Since this library defines the Breakout object in its header file, it's a death sentence for users wanting to use the header file from two different .cpp files, as such is common in IDEs like PlatformIO + VSCode, since that causes multiple definition of errors.

Users are running into this error for example here.

This PR fixes this error by only declaring the breakout object to be extern and then adding a .cpp file in which the object is then created once.

github-actions[bot] commented 1 year ago

Memory usage change @ a3ffef2bdd63bed1f9055c692347effc8d5dd19c

Board flash % RAM for global variables %
arduino:mbed_portenta:envie_m7 N/A N/A N/A N/A
Click for full report table Board|`examples/BreakoutRTCGet`
flash|%|`examples/BreakoutRTCGet`
RAM for global variables|%|`examples/BreakoutRTCSet`
flash|%|`examples/BreakoutRTCSet`
RAM for global variables|%|`examples/BreakoutWebServer`
flash|%|`examples/BreakoutWebServer`
RAM for global variables|%|`examples/GpioManagement`
flash|%|`examples/GpioManagement`
RAM for global variables|%|`examples/LM75BTemperature`
flash|%|`examples/LM75BTemperature`
RAM for global variables|%|`examples/PDMRootMeanSquare`
flash|%|`examples/PDMRootMeanSquare`
RAM for global variables|%|`examples/analogRead`
flash|%|`examples/analogRead`
RAM for global variables|%|`examples/analogWrite`
flash|%|`examples/analogWrite`
RAM for global variables|% -|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|- `arduino:mbed_portenta:envie_m7`|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A
Click for full report CSV ``` Board,examples/BreakoutRTCGet
flash,%,examples/BreakoutRTCGet
RAM for global variables,%,examples/BreakoutRTCSet
flash,%,examples/BreakoutRTCSet
RAM for global variables,%,examples/BreakoutWebServer
flash,%,examples/BreakoutWebServer
RAM for global variables,%,examples/GpioManagement
flash,%,examples/GpioManagement
RAM for global variables,%,examples/LM75BTemperature
flash,%,examples/LM75BTemperature
RAM for global variables,%,examples/PDMRootMeanSquare
flash,%,examples/PDMRootMeanSquare
RAM for global variables,%,examples/analogRead
flash,%,examples/analogRead
RAM for global variables,%,examples/analogWrite
flash,%,examples/analogWrite
RAM for global variables,% arduino:mbed_portenta:envie_m7,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A ```