Варнинг при gcc -std=gnu99. Помогите разбраться.
От: nah Россия  
Дата: 01.03.11 08:03
Оценка:
Здрасти, всем.

Проект под Линукс, компилятор gcc.
Решил собирать проект с опцией -std=gnu99.
Все хорошо, но есть один warning и я не понимаю его смысл.

---<Код proba.c>----------------------------------------
#include <stdio.h>
typedef unsigned char TMac[6];
void f(const TMac* mac)
{
puts(mac?"mac":"no mac");
}
int main()
{
/*const*/ TMac mac;
f(&mac);
return 0;
}
---</Код proba.c>----------------------------------------

gcc -std=gnu99 -o q proba.c
proba.c: In function ‘main’:
proba.c:10: warning: passing argument 1 of ‘f’ from incompatible pointer type
proba.c:3: note: expected ‘const unsigned char (*)[6]’ but argument is of type ‘unsigned char (*)[6]’

Соответственно, если раскоментировать /*const*/ то варнинга не будет.

Так что же не нравится копилятору и как написать коректно?

Например, если функция ждет аргумент "const int*", а передается "int*", то все ОК и внутри функции аргумент будет указателем на константный инт.
Вроде, у меня ситуация аналогична.

Ещё раз, что же не нравится копилятору и как написать коректно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.