fix: drop extern "C" on main to clear -Wpedantic warning
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 1m1s
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 1m1s
src/main.cpp:161:16: warning: cannot declare '::main' with a linkage specification [-Wpedantic] Long-standing upstream OpenInverter code (predates SKUDAK). C++ forbids linkage specifications on main; with -pedantic in CPPFLAGS this fires every build. Confirmed safe to drop: - libopencm3 vector.c:35 forward-declares int main(void) with default linkage and invokes it at boot. - Linker resolves main by symbol name, not by linkage attribute. - stm32-sine has the same upstream issue; same fix applies if we ever push upstream. Bump VERSTR -S3 -> -S4 so the OI web UI version field shows the new build. Verified in the built binary as "4=1.20.R-S4". Build: clean, no compiler warnings (only the long-standing linker RWX notice remains, unrelated). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,3 +4,4 @@ stm32_charger*
|
|||||||
linker.map
|
linker.map
|
||||||
*.layout
|
*.layout
|
||||||
*.out
|
*.out
|
||||||
|
.DS_Store
|
||||||
|
|||||||
+2
-2
@@ -126,9 +126,9 @@
|
|||||||
#define CAT_COMM "Communication"
|
#define CAT_COMM "Communication"
|
||||||
|
|
||||||
// SKUDAK customization suffix: bump on every Skudak-side change so the OpenInverter
|
// SKUDAK customization suffix: bump on every Skudak-side change so the OpenInverter
|
||||||
// web UI shows a distinct version (e.g. "4=1.20.R-S3") and we can visually confirm
|
// web UI shows a distinct version (e.g. "4=1.20.R-S4") and we can visually confirm
|
||||||
// the right firmware is flashed. Match the stm32-sine -S<N> convention.
|
// the right firmware is flashed. Match the stm32-sine -S<N> convention.
|
||||||
#define VERSTR STRINGIFY(4=VER-S3)
|
#define VERSTR STRINGIFY(4=VER-S4)
|
||||||
|
|
||||||
/***** enums ******/
|
/***** enums ******/
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -158,7 +158,11 @@ extern "C" void tim2_isr(void)
|
|||||||
scheduler->Run();
|
scheduler->Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int main(void)
|
// C++ forbids a linkage specification on `main` (-Wpedantic). The reset_handler
|
||||||
|
// in libopencm3's vector.c forward-declares `int main(void)` with default
|
||||||
|
// linkage and resolves it at link time by symbol name, so dropping `extern "C"`
|
||||||
|
// here doesn't affect how main is invoked at boot.
|
||||||
|
int main(void)
|
||||||
{
|
{
|
||||||
extern const TERM_CMD termCmds[];
|
extern const TERM_CMD termCmds[];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user