2017-07-12 13 views
-1

STM32F4xxプロジェクトでスタックオーバーフローの問題が発生しました。 printfが原因であることが判明しました。 FreeRTOSのサポートでは、代わりにprintf-stdarg.cを使用することを提案しています。 プロジェクトでstdio.hインクルードをすべて削除しました。これは、 "組み込み関数 'printf'の暗黙的な宣言が間違っていますが、リンカーが組み込みのライブラリを使用したことを意味するOKをコンパイルします。printf組み込み関数への参照を削除する

私の質問は、リンカー(gcc)が組み込みのprintf/sprintf関数を使用しないようにする方法です。

+2

このエラーは、組み込みのライブラリをどのように使用していることを意味しますか? –

+0

私はEclipseの下でSW4STM32を使用しています。 – alsaleem

+1

代替を提供していないので、標準のものだけを使用します –

答えて

2

printf-stdarg.cを実行可能ファイルにリンクした場合、printfというシステムではなく、その関数が呼び出されます。標準ライブラリの関数は弱い記号です。つまり、システム関数をオーバーライドする同じ名前の関数を定義できます。

#include <stdio.h>を削除しても、システムライブラリがリンクされるのを妨げることはありません。コードに必要な関数プロトタイプを取り除くだけです。

コードにインクルードバックを入れてprintf-stdarg.cとリンクすれば、コードはそれらの機能を使用します。

+0

私はそれをテストします。私と一緒に熊。 – alsaleem

関連する問題