私のcコンパイラが次の(単純化された)コードで警告/エラーを出さない理由を理解しようとします。C - gcc:関数宣言/実装が異なるコンパイラ警告がありません。
some.h:
void foo();
some.c:
static uint32_t count = 0;
void foo(uint32_t num) {
count += num;
print("Count: %u");
}
機能の実装はパラメータを有し、一方
関数宣言はパラメータを有していません
mai n.c:
foo(100);
foo();
出力:ターゲット・ビルドの
Count: 100
Count: 100
コンパイラ:ターゲット・ビルドの
gcc-arm-none-eabi-4_9-2015q1-20150306-win32
リンカ:
gcc-arm-none-eabi-4_9-2015q1-20150306-win32
コンパイラフラグ:Cで
-Wall -Werror -DuECC_CURVE=uECC_secp256r1 -DMEMORY_CHECK -DDEBUG -Os -g3 -DBACKTRACE
あなたの編集ステートメント?含まれますか? –
'print'は' printf'です。[UB](Ub)[UB](https://en.wikipedia.org/wiki/Undefined_behavior) – LPs
デバッグのヘルプを求める質問(「なぜこれではないのですか?コードは動作していますか? ")には、目的の動作、特定の問題またはエラー、および質問自体にそれを再現するのに必要な最短コードが含まれていなければなりません。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 – Olaf