프로그램 사용/gcc2021. 11. 18. 12:46

gcc에서 해보는데 헐.. 이게 되네?

변수명과 구조체 타입명은 다른 영역으로 구분되나?

identifier로 동일하게 취급될줄 알았는데 아니라니?

 

$ cat t.c
#include <stdio.h>

struct help { int a; int b; int c;};

struct help a;
int help = 1;

void main()
{
        a.a = 5;
        a.b = 7;
        a.c = 9;
        printf("%d %d %d %d\n",help, a.a, a.b, a.c);
}

 

$ gcc t.c
$ ./a.out
1 5 7 9

 

[링크 : https://cpp.hotexamples.com/site/file?hash=0x3b8107de9c96fe7f1b348af2ed3b6ff15fb2cb740a65ea0a91d33bcab75b25ae&fullName=wheatley-master/wlegl_handle.c&project=jekstrand/wheatley]

 

다만, 함수와 변수명의 식별자 영역은 동일한지 에러가 발생한다.

$ cat t.c
#include <stdio.h>

void help()
{
        printf("%s\n",__func__);
}

struct help { int a; int b; int c;};

struct help a;
int help = 1;

void main()
{
        a.a = 5;
        a.b = 7;
        a.c = 9;
        printf("%d %d %d %d\n",help, a.a, a.b, a.c);
        help();
}

 

$ gcc t.c
t.c:11:5: error: ‘help’ redeclared as different kind of symbol
 int help = 1;
     ^~~~
t.c:3:6: note: previous definition of ‘help’ was here
 void help()
      ^~~~
t.c: In function ‘main’:
t.c:19:2: error: called object ‘help’ is not a function or function pointer
  help();
  ^~~~
t.c:11:5: note: declared here
 int help = 1;
     ^~~~

'프로그램 사용 > gcc' 카테고리의 다른 글

gcc / 문자열 선언  (0) 2022.03.17
static link  (0) 2022.02.07
gcc unsigned to signed upcast 테스트  (0) 2021.07.08
gcc vectorized loop  (0) 2021.06.30
gcc unsigned to signed cast  (0) 2021.06.22
Posted by 구차니