реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Отключить предупреждении об неиспользуемых переменных, только в одном модуле
pokk
сообщение Nov 23 2017, 03:11
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



В качестве отладки при попадании в 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);
}
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 23 2017, 03:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А не проще ли отключить печать аккуратно, а не через кучу комментов?
Код
printf -> printf_hf

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


Хотя ругаться все равно будет. Можно объявить переменные как volatile, Вы ведь их отладчиком смотрите?
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 23 2017, 06:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Некоторые компиляторы замолкают, если сделать так:
(void)var;
Go to the top of the page
 
+Quote Post
pokk
сообщение Nov 23 2017, 07:06
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



scifi, помогло спасибо!!
Цитата
А не проще ли отключить печать аккуратно, а не через кучу комментов?

Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K laughing.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 23 2017, 08:38
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(pokk @ Nov 23 2017, 05:11) *
В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?

__root static int volatile x;
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 23 2017, 12:50
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



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

Там еще есть Ctrl-T sm.gif
для ленивых и торопливых.
Go to the top of the page
 
+Quote Post
ms1
сообщение Nov 23 2017, 14:44
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 150
Регистрация: 13-10-05
Пользователь №: 9 614



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

На мой взгляд наиболее правильно использовать это:
#pragma diag_suppress
#pragma diag_default
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 23 2017, 17:00
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

Но это не спасёт от выкидывания оптимизирующим линкёром этих переменных из результирующего файла, если указанные переменные нигде не используются.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016