gcc/g++;比较两个指针时发出警告';地址而不是内容?
假设我有一个带有指针输入的函数gcc/g++;比较两个指针时发出警告';地址而不是内容?,c,pointers,gcc,compiler-warnings,gcc-warning,C,Pointers,Gcc,Compiler Warnings,Gcc Warning,假设我有一个带有指针输入的函数 void f(int *a, int *b) { if (*a < *b) { printf("hello!\n"); } } void f(int*a,int*b){ 如果(*a
void f(int *a, int *b) {
if (*a < *b) {
printf("hello!\n");
}
}
void f(int*a,int*b){
如果(*a<*b){
printf(“你好!\n”);
}
}
其中,*a<*b
是正确的行为
gcc中是否有一个警告,我可以在编写代码时打开它,例如
a < b
a
当
a
,b
是int*
时,编译器会警告我?不可能有这样的警告,因为a
其中a
和b
都是指向int
的指针是一个合法的测试,您的代码可以在其他地方执行
典型的用例可能是通过二分法搜索的指针的排序向量来表示一组指针
您可以考虑通过添加一个<代码> >语法> <代码>来定制GCC,以启用这样的警告(在某些选择的地方),但是您需要一些时间来实现警告本身。我不确定是否值得花一周的时间以这种方式定制GCC
从技术上讲,C标准希望
a
和b
指向同一聚合内(否则这是未定义的行为,或者至少是未指定的行为),但在大多数系统上,您可以比较相同类型的任何指针。不可能存在此类警告,因为a
其中a
和b
都是指向int
的指针,这是一个合法的测试,您的代码可以在其他地方执行
典型的用例可能是通过二分法搜索的指针的排序向量来表示一组指针
您可以考虑通过添加一个<代码> >语法> <代码>来定制GCC,以启用这样的警告(在某些选择的地方),但是您需要一些时间来实现警告本身。我不确定是否值得花一周的时间以这种方式定制GCC
从技术上讲,C标准希望a
和b
指向同一聚合中的点(否则这是未定义的行为,或者至少是未指定的行为),但在大多数系统上,您可以比较相同类型的任何指针