1
ローカルバッファが初期化されたときに、ローカルバッファを持つ関数を使用してコードを作成しましたが、例外が発生しましたが、初期化せずに宣言したときそれはうまく動作し、私はなぜ理解できません。 リンカのスタックサイズも増やしましたが、これは問題ではないようです。バッファ全体の初期化で例外が発生する
NB:バッファ初期化全体をサポートするc99/c11コンパイルオプションでコンパイルしています。あなたの答えのための
#define UDS_SRV_CFG2_MAX 20
NCS_PRI_FCT tUdsStatus UDS_RdbiManagement(u16 *puwLen, u8 *aubUdsData) {
tUdsStatus eUdsStatus;
u8 ubTableCfgIdx[UDS_SRV_CFG2_MAX] = { 0 }; // this leads to exception
//...
}
NCS_PRI_FCT tUdsStatus UDS_RdbiManagement(u16 *puwLen, u8 *aubUdsData) {
tUdsStatus eUdsStatus;
u8 ubTableCfgIdx[UDS_SRV_CFG2_MAX]; // code works fine here
// ...
}
"c99/c11コンパイルオプションでコンパイル"することはできません。あなたはC99モードでビルドするか、*または* C11モードでビルドします。両方を行うことはできませんが、それらは相互に排他的です。 –
「バッファ全体の初期化」とはどういう意味ですか? C(C89、C99、C11)では部分的な初期化はありません。オブジェクトは初期化されていないか、または完全に(すべての作業バイト)初期化されています。 – pmg
そして* *あなたは例外を受け取りますか? 'UDS_RdbiManagement'が呼び出されたら?どこか別の場所? *あなたの*コードでクラッシュが発生する場所を特定するためにデバッガを使用していますか? –