[Bug c/57133] New: false const qualifier warning typedef

2013-05-01 Thread grpintar at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57133



 Bug #: 57133

   Summary: false const qualifier warning typedef

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: minor

  Priority: P3

 Component: c

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: grpin...@gmail.com





typedef char *type;



void f(const type t)

{



}



int main(void)

{

const char *str = "string";

f(str);

return 0;

}



warning: passing argument 1 of 'f' discards 'const' qualifier from pointer

target type [enabled by default]

  f(str);

  ^

note: expected 'type' but argument is of type 'const char *'

 void f(const type t)

  ^



It is similar with gcc 4.5.3.


[Bug c/57133] false const qualifier warning typedef

2013-05-01 Thread grpintar at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57133



--- Comment #3 from grpintar at gmail dot com 2013-05-01 12:43:28 UTC ---

(In reply to comment #1)

> (In reply to comment #0)

> > typedef char *type;

> > 

> > void f(const type t)

> > {

> 

> This doesn't do what you think it does.  t is now a const variable of type

> char*, not a variable of type const char*.  Observe:

> 

> > cat pr57133.c

> typedef char *type;

> void f(const type t) { t = 0; }

> void g(const type t) { *t = 0; }

> > gcc -Wall -S pr57133.c

> pr57133.c: In function 'f':

> pr57133.c:2:1: error: assignment of read-only parameter 't'

> 

> The warning in your main() is correct.



I see. Sorry.