printf格式说明符的参数无效,而printf格式说明符的附加参数

问题描述 投票:0回答:1

我已经在Coverity中调试了此RTOS代码,并遇到了一些小错误。这些错误是自说明性的,因为它们是格式说明符错误。这两个错误都在主要功能上。第一个错误在行上:

RTOS_TEST(" Error = 0x%X, pool = 0x%X\n", result, (_mqx_uint)error_ptr);

错误:printf格式说明符(PRINTF_ARGS)的参数中的类型无效invalid_type:格式说明符%X的参数结果应为unsigned int类型,但类型为unsigned long。

第二个错误在行:

RTOS_TEST("MQX lock mutex FAILED: 0x08X\n", status);

错误:printf格式说明符的额外参数(PRINTF_ARGS)extra_argument:格式字符串未使用此参数:status。

我不确定我如何传递一个额外的参数,因为RTOS_TEST确实采用了一个参数。请告诉我我在做什么错。

#if !defined(__arc__)
   #define RTOS_TEST(...) printf(__VA_ARGS__)
#else
   #define RTOS_TEST(...)
#endif

typedef uint_32  _mqx_uint, _PTR_ _mqx_uint_ptr;
typedef uint32_t Status_t;

void SECTION_CODE("CODE_SLOW") WrappersTest(uint_32  parameter)
{
   _lwmem_pool_id lwmem_pool_id;
   pointer        error_ptr;
   pointer        error2_ptr;
   Status_t       status;
   _mqx_uint      result;
   BOOL           fail = FALSE;

   RTOS_TEST("Start MQX integrity tests ...\n");

   TestQueue();
   TestLightWeightSemaphore();
   TestMutexAPI();
   TestLightWeightEvent();
   TestFastMessageQueue();
   TestLightWeightMemory();

#if defined(MQX_TEST_EVENT_TEST)
   RTOS_TEST("Calling _event_test ..."); fflush(stdout);
   result = _event_test(&error_ptr);

   if (result != MQX_OK)
   {
      RTOS_TEST(" ***FAILED*** _event_test: 0x%08X\n", result);
      fail = TRUE;
   }
   else
   {
      RTOS_TEST("PASSED!\n");
   }
#endif // MQX_TEST_EVENT_TEST

status = RTOS_MutexInit(&testMutex, (uint8_t*)Name);

if (status != STATUS_OK)
{
   RTOS_TEST("MQX init mutex FAILED: 0x%08X\n", status);
}

for (; loopCount > 0; loopCount--)
{
   status = RTOS_MutexLock(&testMutex);

   if (status != STATUS_OK)
   {
      RTOS_TEST("MQX lock mutex FAILED: 0x08X\n", status);
   }
}

int main()
{
   .........,
   RTOS_TEST(" Error = 0x%X, pool = 0x%X\n", result, (_mqx_uint)error_ptr);
   ..........
   if (status != STATUS_OK)
         {
            RTOS_TEST("MQX lock mutex FAILED: 0x08X\n", status);
         }
   ..........
   return 0;
}
    

我已经在Coverity中调试了此RTOS代码,并遇到了一些小错误。这些错误是自说明性的,因为它们是格式说明符错误。这两个错误都在主要功能上。 ...

c operating-system printf rtos format-specifiers
1个回答
0
投票

正在通话中

© www.soinside.com 2019 - 2024. All rights reserved.