Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отключить предупреждении об неиспользуемых переменных
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
pokk
В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?
Код
//================================================================================
==================
void hard_fault_handler_c (unsigned int * hardfault_args)
{
  static unsigned int stacked_r0;
  static unsigned int stacked_r1;
  static unsigned int stacked_r2;
  static unsigned int stacked_r3;
  static unsigned int stacked_r12;
  static unsigned int stacked_lr;
  static unsigned int stacked_pc;
  static unsigned int stacked_psr;

  stacked_r0 = ((unsigned long) hardfault_args[0]);
  stacked_r1 = ((unsigned long) hardfault_args[1]);
  stacked_r2 = ((unsigned long) hardfault_args[2]);
  stacked_r3 = ((unsigned long) hardfault_args[3]);

  stacked_r12 = ((unsigned long) hardfault_args[4]);
  stacked_lr = ((unsigned long) hardfault_args[5]);
  stacked_pc = ((unsigned long) hardfault_args[6]);
  stacked_psr = ((unsigned long) hardfault_args[7]);
  NOP;
  //printf ("\n\n[Hard fault handler - all numbers in hex]\n");
//  printf ("R0 = %x\n", stacked_r0);
//  printf ("R1 = %x\n", stacked_r1);
//  printf ("R2 = %x\n", stacked_r2);
//  printf ("R3 = %x\n", stacked_r3);
//  printf ("R12 = %x\n", stacked_r12);
//  printf ("LR [R14] = %x  subroutine call return address\n", stacked_lr);
//  printf ("PC [R15] = %x  program counter\n", stacked_pc);
//  printf ("PSR = %x\n", stacked_psr);
//  printf ("BFAR = %x\n", (*((volatile unsigned long *)(0xE000ED38))));
//  printf ("CFSR = %x\n", (*((volatile unsigned long *)(0xE000ED28))));
//  printf ("HFSR = %x\n", (*((volatile unsigned long *)(0xE000ED2C))));
//  printf ("DFSR = %x\n", (*((volatile unsigned long *)(0xE000ED30))));
//  printf ("AFSR = %x\n", (*((volatile unsigned long *)(0xE000ED3C))));
//  printf ("SCB_SHCSR = %x\n", SCB->SHCSR);

  while (1);
}
aaarrr
А не проще ли отключить печать аккуратно, а не через кучу комментов?
Код
printf -> printf_hf

#ifdef __DEBUG__
#define printf_hf(...)    printf(__VA_ARGS__)
#else
#define printf_hf(...)
#endif


Хотя ругаться все равно будет. Можно объявить переменные как volatile, Вы ведь их отладчиком смотрите?
scifi
Некоторые компиляторы замолкают, если сделать так:
(void)var;
pokk
scifi, помогло спасибо!!
Цитата
А не проще ли отключить печать аккуратно, а не через кучу комментов?

Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K laughing.gif
jcxz
Цитата(pokk @ Nov 23 2017, 05:11) *
В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?

__root static int volatile x;
k155la3
Цитата(pokk @ Nov 23 2017, 10:06) *
scifi, помогло спасибо!!
Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K laughing.gif

Там еще есть Ctrl-T sm.gif
для ленивых и торопливых.
ms1
Цитата(pokk @ Nov 23 2017, 06:11) *
В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?

На мой взгляд наиболее правильно использовать это:
#pragma diag_suppress
#pragma diag_default
jcxz
Цитата(ms1 @ Nov 23 2017, 16:44) *
На мой взгляд наиболее правильно использовать это:
#pragma diag_suppress
#pragma diag_default

Но это не спасёт от выкидывания оптимизирующим линкёром этих переменных из результирующего файла, если указанные переменные нигде не используются.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.