source

변수/포인트의 유형을 C로 출력할 수 있는 방법이 있습니까?

lovecheck 2023. 8. 5. 10:40
반응형

변수/포인트의 유형을 C로 출력할 수 있는 방법이 있습니까?

프로그램에 포함된 변수 유형을 인쇄하거나 확인합니다.그것을 하는 좋은 방법이 있습니까?좋은 뜻은, 비록 그것이 의도적으로 컴파일러 오류를 던지는 것을 의미하더라도, 작동하는 방법을 의미합니다.

예:

client.c:55: error: incompatible types in assignment

제가 지금 받고 있는 오류입니다.제가 원하는 것은 다음과 같은 것을 말해주는 것입니다.

client.c:55: error: attempting to assign type struct a to type struct b

또는 다음과 같이 사용할 수 있는 기능:

printf(gettype(x));

출력할 수 있습니다.

struct b

저는 방금 이것을 하는 방법을 발견했습니다.

printf("%d", variable);

변수가 int가 아닌 경우gcc -Wall에서는 유형이 일치하지 않는다고 불만을 표시하고 변수 유형을 인쇄합니다. 이것이 바로 사용자가 찾고 있는 변수 유형입니다.

GDB를 사용하여 디버깅해 보십시오. GDB는 유형을 포함하여 변수와 관련된 모든 속성을 인쇄합니다.그러나 GDB를 사용하기 전에 프로그램을 컴파일해야 합니다.

를 사용하여 디버그하는 경우gdb그런 다음 다음으로 중단점을 설정할 수 있습니다.break line_number해당 변수 유형을 가져올 위치에서 실행을 중단합니다.그런 다음 다음을 사용하여 gdb의 변수 유형을 인쇄할 수 있습니다.ptype your_variable_name또는whatis your_variable_name마지막으로 변수 유형과 지정한 정의가 인쇄됩니다.

C에서는 변수를 선언할 때 유형을 제공합니다.이것은 컴파일러가 할당에 대해 불평할 때 가지고 있는 유일한 정보입니다(즉, 개체의 런타임 유형을 사용하지 않고 사용자가 가지고 있는 정적 유형을 사용합니다).

코드로 이동하여 라인 55를 찾아 어떤 변수가 있는지 확인하고 코드에서 유형을 찾습니다.C에서는 과부하도 없고, 유형은 어떤 언어에서도 얻을 수 있는 것처럼 정적이고 단순합니다.

gcc 또는 gcc 호환 컴파일러를 사용하는 경우 크기와 거의 비슷하게 작동하는 (분명히 비표준 및 비휴대성) 유형의 키워드를 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2160635/is-there-a-way-to-print-out-the-type-of-a-variable-pointer-in-c

반응형