2015-02-03 4 views
2

@, $ 또는를 사용할 방법이 있는지 궁금합니다. C 함수 또는 변수 이름. 나는 링커가 (C++ 이름 맹 글링 때문에) 그것들을 허용한다는 것을 안다.

허용 할 수있는 이스케이프 코드가 있습니까 (나는보기 흉하게 보이지 않습니다.)? 아니면, 표준 C에서, 이것은 완전히 불가능한가요? 당신이 $ in identifiers을 가질 수 GCC (또는 아마 Clang/LLVM)를 사용하여, 당신은 당신은 아마 또한 GNU ld을 할 수 asm labels

사용하여 링커 이름을 설정할 수있는 경우

+0

어쩌면 그렇게 좋을까요? –

+1

[달러 기호는 gcc, clang 및 Visual Studio의 확장으로 지원됩니다] (http://stackoverflow.com/a/26302259/1708801) –

+0

@iharob 가능하거나 불가능한 경우 궁금합니다. – MiJyn

답변

6

그것은 순전히 표준 C.

에 가능하지 않다 그러나 트릭은 ld scripts입니다.

+0

당신은'asm'을 사용하여 링커 이름을 설정하는 예제를 제공합니까? – MiJyn

+0

방금 ​​내 대답을 편집하여 설명서에 연결했습니다. –

5

표준 C는 이들 중 어느 것도 허용하지 않습니다 (연산자가 아니기 때문에 실제로는 ?을 허용 할 수 없으므로 별도의 토큰 임). GCC (및 호환 가능한 컴파일러)는 $을 허용하지만 다른 것은 허용하지 않습니다. 그러나 GNU C (GCC) 확장을 사용하여 다른 기본 심볼 이름을 참조하는 외부 링키지 이름에 대한 선언을 만들 수 있습니다. 원하는대로 달성 할 수 있습니다 (예 : C++ 심볼을 참조하려는 경우 나는 구문이 함수 선언의 끝에 __asm__("symbol_name")을 추가하는 것과 같다고 생각한다. 대부분의 리눅스 시스템에서는 glibc 헤더에 몇 가지 예가 있습니다.

dlsym이있는 경우 런타임에이 이름을 사용하여 조회 할 수 있습니다.

관련 문제