有没有办法在PyCharm或Python中将变量声明为未使用,因此您可以明确告诉编译器不要发出警告?
我不是在讨论为程序员命名未使用的变量的惯例(通常命名为"_"或"__"),而是一个显式地将变量标记为编译器未使用的选项,例如在循环中.我也不仅仅想要禁用检查.
我听说你可以在PyDev中通过使用"unused"开始变量名来做到这一点,我认为这也可能存在于PyCharm中,但还是找不到它.
在实现存根等时,您希望避免使用"未使用的变量"警告.多年来,我遇到过UNUSED()宏的一些替代方案,但从来没有一个被证明适用于"所有"编译器,或者标准是气密的.
或者我们为每个构建平台坚持使用#ifdef块?
编辑:由于非c兼容替代品的许多答案,我想澄清我正在寻找一个对C和C++,所有口味等都有效的定义.
我需要使用pthreat但我不需要将任何参数传递给函数.因此,我将NULL传递给pthread_create上的函数.我有7个pthreads,所以gcc编译器警告我有7个未完成的参数.如何在C编程中将这7个参数定义为未使用?如果我没有将这些参数定义为未使用,是否会导致任何问题?提前感谢您的回复.
void *timer1_function(void * parameter1){
//<statement>
}
int main(int argc,char *argv[]){
int thread_check1;
pthread_t timer1;
thread_check1 = pthread_create( &timer1, NULL, timer1_function, NULL);
if(thread_check1 !=0){
perror("thread creation failed");
exit(EXIT_FAILURE);
}
while(1){}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我知道应该总是用两者编译-Wall并且-Wextra因为它们启用警告并帮助我们理解我们的错误,如果有的话.
我已经读过-Wextra不建议使用编译器标志,因为它太冗长了很多误报.
读这篇文章我很惊讶.所以我开始谷歌搜索它,但我没有得到任何答案,因为所有搜索结果显示" -Wextra旗帜做什么?".
所以,我的问题是
-Wextra旗帜会发出不必要的警告?-Wextra标志启用导致GCC发出这些类型警告的其他标志?在细读一些 STM32 中间件代码时,我遇到了这个非常奇怪的行并且无法解析它。基本上就是,
(void)(foo);
Run Code Online (Sandbox Code Playgroud)
这不是空指针转换 - 这很简单。它不是调用函数并将其返回值转换为 void - 这将需要更多的括号。它看起来像一个没有左值的右值。这只是防止功能被优化掉的空操作吗?或者它实际上有什么作用?
这是在上下文中。
// SVCCTL_EvtAckStatus_t is just an enum typedef
typedef SVCCTL_EvtAckStatus_t (*SVC_CTL_p_EvtHandler_t)(void *p_evt);
void SVCCTL_RegisterCltHandler( SVC_CTL_p_EvtHandler_t pfBLE_SVC_Client_Event_Handler )
{
#if (BLE_CFG_CLT_MAX_NBR_CB > 0)
// Ignore all this
SVCCTL_CltHandler.SVCCTL_CltHandlerTable[SVCCTL_CltHandler.NbreOfRegisteredHandler] = pfBLE_SVC_Client_Event_Handler;
SVCCTL_CltHandler.NbreOfRegisteredHandler++;
#else
// This is the weird stuff
(void)(pfBLE_SVC_Client_Event_Handler);
#endif
return;
}
Run Code Online (Sandbox Code Playgroud)