c 56

정점 배열 객체 이해(glGenVertexArrays)

정점 배열 객체 이해(glGenVertexArrays) VAO(Vertex Array Object)를 생성/생성할 때 다음과 같은 점과 혼동이 있습니다. glGenVertexArrays(GLsizei n, GLuint *arrays); 그리고. glBindVertexArray(GLuint); 버퍼 객체를 생성할 수 있고 정점에 대해 설명할 수 있으며 버퍼 객체를 다음과 같이 설명할 수 있기 때문입니다.glVertexAttribPointer그리고.glEnableVertexAttribArrayVAO를 만들지 않고도 말입니다. 버퍼 객체의 데이터를 설명하기 위해 실제로 VAO를 생성할 필요가 없는 경우 OpenGL SuperBible 5ed와 같은 소스에 VBO를 생성할 때 VAO를 생성하기 위한 호출이 포함..

programing 2023.10.29

C 표준 라이브러리의 기능을 C++에서 사용할 수 있습니까?

C 표준 라이브러리의 기능을 C++에서 사용할 수 있습니까? 저는 지금 C와 C 표준 라이브러리에 익숙해지고 있는데 나중에 C++와 함께 일할 때 이 분야에 대한 제 지식이 유용할지 궁금합니다. 따라서 C 표준 라이브러리에서 제공하는 기능을 C++ 설정으로 사용할 수 있는지, 실제로 사용하는 것이 타당한지, 왜 가능한지 알고 싶습니다.네, C++는 원래 C++에서 어떤 C 라이브러리라도 쉽게 사용할 수 있도록 설계되었습니다.물론 이것은 약간 덜 사실입니다. (특히 C 라이브러리가 어떤 C++ 키워드를 사용하는 경우에는)try아니면dynamic_cast, 작동하지 않습니다. 또한 C++로 코딩된 콜백이 C 라이브러리로 전달되면 큰 혼란이 발생할 수 있습니다. C++에서 C 헤더 파일을 사용하는 표준 방법은..

programing 2023.10.24

구조물의 크기를 확인하려면 어떻게 해야 합니까?

구조물의 크기를 확인하려면 어떻게 해야 합니까? 이 질문은 미래의 방문객들에게 도움이 될 것 같지는 않습니다; 그것은 단지 작은 지리적 지역, 특정한 시간, 또는 인터넷의 전세계 사용자들에게 일반적으로 적용될 수 없는 매우 좁은 상황에만 관련이 있습니다.이 질문을 보다 광범위하게 적용할 수 있도록 도움을 주려면,헬프 센터를 방문합니다. 닫힘11년 전에. struct a { char *c; char b; }; 크기가 어떻게 됩니까?#include typedef struct { char* c; char b; } a; int main() { printf("sizeof(a) == %d", sizeof(a)); } 32비트 기계에서 "(a) == 8의 크기"를 받습니다.구조물의 전체 크기는 패킹에 따라 달라집니다..

programing 2023.10.24

ANTLR을 사용하여 구축된 AST를 출력하는 방법은?

ANTLR을 사용하여 구축된 AST를 출력하는 방법은? 저는 C의 정적 분석기를 만들고 있습니다.저는 자바 코드를 생성하는 ANTLR을 이용하여 렉서와 파서를 해왔습니다. ANTLR에서 자동으로 AST를 구축합니까?options {output=AST;}? 아니면 제가 직접 나무를 만들어야 합니까?그렇다면 AST에서 노드를 어떻게 뱉을 수 있습니까? 저는 현재 그 AST의 노드가 SSA를 만드는 데 사용될 것이고, 정적 분석기를 만들기 위해 데이터 플로우 분석을 할 것으로 생각하고 있습니다.제가 가는 길이 맞나요? 라파엘은 이렇게 썼습니다. antlr에서 옵션 {output=에 의해 자동으로 AST를 구축합니까?AST;}? 아니면 내가 직접 트리를 만들어야 합니까?그렇다면 AST에서 노드를 어떻게 뱉을 수..

programing 2023.10.19

스택 배열의 포인터에 액세스할 수 없는 이유는 무엇입니까?

스택 배열의 포인터에 액세스할 수 없는 이유는 무엇입니까? 아래 코드를 확인해주시기 바랍니다.배열을 다음과 같이 전달하려고 합니다.char**함수: #include #include static void printchar(char **x) { printf("Test: %c\n", (*x)[0]); } int main(int argc, char *argv[]) { char test[256]; char *test2 = malloc(256); test[0] = 'B'; test2[0] = 'A'; printchar(&test2); // works printchar((char **) &test); // crashes because *x in printchar() has an invalid pointer free(..

programing 2023.10.19

glibc 사용 여부를 구분하는 방법

glibc 사용 여부를 구분하는 방법 저는 다양한 플랫폼과 OS에 사용되는 큰 프레임워크를 위해 백트레이스 기능을 구현하려고 합니다.그들 중 일부에서는 glibc와 연결된 반면, 다른 일부에서는 다른 것(예:uclibc)를 사용합니다. 역추적 () 함수는 전자에만 존재합니다. glibc 사용 여부를 알 수 있는 방법이 있습니까?정의된 것이 있습니까?glibc 매뉴얼에서 답변을 찾을 수 없었습니다.컴파일하는 동안 링크 타임 정보를 가질 수 없다는 것은 알지만, 파일을 포함하는 것은 다르게 해야 할 것 같습니다.적어도 역추적은 어딘가에 신고해야 합니다.컴파일러에게 명시적인 플래그를 전달하는 것을 강요하지 않고 확인하고 싶습니다.features.h, 필요한 매크로가 포함되어 있습니다. #define __GNU..

programing 2023.10.19

COM, COM+, DCOM, 어디서부터 시작할까요?

COM, COM+, DCOM, 어디서부터 시작할까요? COM+, DCOM이 궁금합니다.MSFT에서 기본적으로 이 도구를 사용하는 것을 권장하지 않는다는 것을 알고 있지만(C/C++를 사용하는 것을 의미함), 인터넷 익스플로러를 C 프로그램에 내장하는 것과 같은 이러한 기술을 사용하는 방법을 배우고 싶습니다. 저는 이 기술에 대해 잘 아는 사람들을 찾을 수 있을 거라고 생각했습니다. 어디서부터 시작할까요?무슨 생각 있어요?(헬로월드 DCM과 같은) 예가 있습니까?만약 여러분이 COM을 배우는 것에 대해 진지하게 생각한다면, 돈 박스의 "에센셜 COM"은 분명히 절대적인 "꼭 읽어야 할" 것입니다.COM은 혼란스러울 수 있으며, 제가 보기에 Don Box는 실제로 "그것을" 얻은 몇 안 되는 사람 중 한 명..

programing 2023.10.19

괄호가 있는 경우와 없는 경우의 크기는 언제 사용해야 합니까?

괄호가 있는 경우와 없는 경우의 크기는 언제 사용해야 합니까? 이 질문에는 이미 다음과 같은 답변이 있습니다. ()가 없는 크기는 무엇을 합니까? (5개 답변) 닫힘8년 전에. typedef struct rem{ int addr; char addrbuf[32]; } foo; 이 두 코드 모두 동일한 결과를 반환합니다. foo addr; printf("size is: %d\n",sizeof addr); printf("size is: %d\n",sizeof (foo)); 사이즈 : 36 사이즈 : 36 하지만 언제 사용해야 할까요?sizeof괄호가 있는지 없는지요?사용시sizeof유형의 경우 유형 주변에 괄호가 필요합니다.표정과 함께 사용하면 그렇지 않습니다.그러나 이 경우에도 당연히 포함시킬 수 있으며, ..

programing 2023.10.19

가상 기능 vs. 기능 포인터 - 성능?

가상 기능 vs. 기능 포인터 - 성능? C++ 가상 함수는 다형 베이스 클래스에서 C 스타일 함수 포인터를 호출하는 것만큼 빠르게 호출됩니까?정말로 다른 점이 있습니까? 함수 포인터를 사용하는 성능 지향 코드를 리팩토링하여 다형성에서 가상 함수로 변경하는 것을 고려하고 있습니다.대부분의 C++ 구현은 이와 유사하게 작동합니다. (그리고 아마도 C로 컴파일된 첫 번째 구현은 다음과 같은 코드를 생성했습니다.) struct ClassVTABLE { void (* virtuamethod1)(Class *this); void (* virtuamethod2)(Class *this, int arg); }; struct Class { ClassVTABLE *vtable; }; 그렇다면, 예를 들어,Class x, ..

programing 2023.10.19

성능 32비트 대 64비트 산술

성능 32비트 대 64비트 산술 토박이64 bit그것들보다 느린 정수 산술 명령어들32 bit상대편 (에 대하여)x86_64기계로.64 bitOS)? 편집: 인텔 Core2 Duo, i5/i7 등 현재 CPU에서정확한 CPU와 동작에 따라 달라집니다.예를 들어 64비트 펜티엄 IV의 경우 64비트 레지스터의 곱셈이 상당히 느렸습니다.코어 2 이상의 CPU는 처음부터 64비트 동작이 가능하도록 설계되었습니다. 일반적으로 64비트 플랫폼용으로 작성된 코드라도 값이 들어가는 32비트 변수를 사용합니다.이것은 주로 산술 속도가 더 빠르기 때문이 아니라(현대 CPU에서는 일반적으로 그렇지 않기 때문입니다) 메모리 및 메모리 대역폭을 덜 사용하기 때문입니다. 12개의 정수를 포함하는 구조는 64비트보다 32비트일 ..

programing 2023.10.19