当前位置:编程学习 > C/C++ >>

这是个C++的问题,或者说,是C++语法里的一个问题。百度里未找到答案,来此询问

这是一截程序,只是个程序片段,想知道这里#endif,#else,和#ifdef HAVE_IPP,这三个后面的程序段,哪些是构成程序的主干部分?哪些是为了优化程序运行的可以在读程序的时候忽略的部分? #endif 331 float* gradPtr = (float*)grad.ptr(y); 332 uchar* qanglePtr = (uchar*)qangle.ptr(y); 333 334 //输入图像img为单通道图像时的计算 335 if( cn == 1 ) 336 { 337 for( x = 0; x < width; x++ ) 338 { 339 int x1 = xmap[x]; 340#ifdef HAVE_IPP 341 dbuf[x] = (float)(imgPtr[xmap[x+1]] - imgPtr[xmap[x-1]]); 342 dbuf[width + x] = (float)(nextPtr[x1] - prevPtr[x1]); 343#else 344 //下面2句把Dx,Dy就计算出来了,因为其对应的内存都在dbuf中 345 dbuf[x] = (float)(lut[imgPtr[xmap[x+1]]] - lut[imgPtr[xmap[x-1]]]); 346 dbuf[width + x] = (float)(lut[nextPtr[x1]] - lut[prevPtr[x1]]); 347#endif 348 } 349 } 350 //当cn==3时,也就是输入图像为3通道图像时的处理。 351 else 352 { 353 for( x = 0; x < width; x++ ) 354 { 355 //x1表示第y行第x1列的地址 356 int x1 = xmap[x]*3; 357 float dx0, dy0, dx, dy, mag0, mag; 358#ifdef HAVE_IPP
答案:#ifdef ……#endif为优化部分,HAVE_IPP这个宏为1则执行后面的语句,否则执行#else后面的语句到#endif结束,跟if……else语句差不多,这是关于宏的问题,可以预读一下陈正冲的c语言深度剖析,讲得很详细

上一个:STM32 库函数求解释...
下一个:生下来就才思敏捷、满诗书,而是从。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,