gcc中有一个众所周知的警告
final Size winStride = new Size(8, 8);
final Size padding = new Size(32, 32);
// Persons detection
hog.detectMultiScale(frame, outputPersons, outputWeights, 0.0, winStride, padding, 1.05, 2.0, false);
// Faces detection
faceDetector.detectMultiScale(frame, outputFaces);
并且通常在尝试使用函数warning: passing argument ... from incompatible pointer type [-Wincompatible-pointer-types]
的参数argv
执行某些操作时会发生。
我已经阅读了这个答案:https://stackoverflow.com/a/28702525/447503。好的,C标准是这样说的,下面的代码将编译并发出警告:
main
不确定C ++,因为g ++在没有警告的情况下编译相同的代码。
这部分标准背后有什么原因吗?我可以在演员表后做些坏事,例如make int main(int argc, char *argv[]) {
const char * const * b = argv;
return b == 0;
}
指向不可写的内存吗?
这可能与Why can't I convert 'char**' to a 'const char* const*' in C?重复,但Aaron的anwer不正确:阅读评论。
Kevin的答案是否错误?
我正在考虑添加一个方便的内联函数,例如:argv
。与C风格的演员表不同,它是类型安全的。