Labels as Values

cbycby의 이미지

조금전에 인터넷 검색하다가 찾은 팁인데.
GCC's extensions to C89 중에

Labes as Values라는것을 보았습니다.
아래의 코드를 보시면 operator&&를 통해 label을 직접 엑세스 할 수 있습니다.
이미 아시는 분도 계실 수 있겠습니다면, 저는 오늘 처음알았거든요... :D

#include <stdio.h>

int main()
{
    //void* ptr = &&foo;
    void* ptr = &&bar;

    goto *ptr;

    return 0;

foo:
    printf("foo\n");

bar:
    printf("bar\n");

hack:
    printf("hack\n");

    return 0;
}
Forums: 
nayana의 이미지

이런식으로 되네요...신기합니다.
-Wall 옵션을 주면 warnning 떨어집니다. 괜히 워닝 나면..기분이 껄끄러워서^^

a.cpp: In function `int main()':
a.cpp:18: warning: label `hack' defined but not used
a.cpp:15: warning: label `bar' defined but not used

워닝 안나게 하는 방법있으면 알려주세요!!!

nohmad의 이미지

warning 메시지가 'defined but not used', 사용되지 않는 레이블이 있다는 경미한 수준이므로, 실제로 사용되지 않는 레이블들을 지우거나 그냥 무시해도 좋을 것 같습니다.