c-preprocessor

    8

    2답변

    이 질문은 구성 유지 관리 및 테스트에 관한 것입니다. 잘못 사용하면 사전 처리기 지침은 C 코드의 가독성과 유지 보수성을 떨어 뜨릴뿐만 아니라 회귀 버그 위험을 증가시킵니다 (예 : 특정 빌드 구성을 특정 기간 동안 테스트하지 않은 경우). 리눅스 커널이 완벽한 유지 보수를하지 않고 엄청난 양의 구성 옵션을 유지할 수 있을지 궁금합니다. 나는 이것이 모든

    0

    5답변

    나는 다음과 같은 코드가 있습니다는 void function() { auto isOk=task(1); if(!isOk) { return; } // more code here auto isOk=task(2); if(!isOk) { return; }

    1

    1답변

    불가능한 상황을 피하기 위해 두 가지 경우로 문제를 줄일 수 있습니다. 사례 1 최초의 (간단한) 경우 전처리를 검출 할 수있는 기회를 갖는 상황, 즉 그 첫 번째 전에 정의 (미리 정의되고 매크로에 따라 전처리 지시문있을 것이다 입력 라인). 예를 들어 : #ifdef FOO #define BAR 42 #else #define BAR 43 #end

    1

    1답변

    저는 여러 플러그인이 포함될 C++/Qt 프로그램을 개발 중입니다. 각 클래스에 대한 나는 다음과 같습니다 플러그인 인터페이스를 정의 할 필요가 그래서 #define MY_PLUGIN_BASE(__c_name,__appendix) \ class __c_name##__appendix : public QObject, myPlug {

    0

    2답변

    GCC로 작성된 C 프로젝트에서 전처리 지시어 __BASE_FILE__을 사용하고 있습니다. 문제는 서로 다른 두 대의 컴퓨터가 만든 이진 파일이 동일해야하므로 생성 된 이진 파일에 경로가 나타나지 않아야한다는 것입니다. 전처리 중에 __BASE_FILE__ (파일의 전체 경로를 포함)에 의해 반환 된 문자열을 축소 할 수있는 방법을 찾을 수 없습니다. 그

    4

    2답변

    대학의 튜터 중 한 명은 매크로를 사용하여 c99 코드에서 반복을 줄이라 제안합니다. 그것은 자신의 전 고용주에서 안티 패턴으로 간주되었다 (그러나 그가 모르는 주장 산업 배경으로 또 다른 교사는 그것의 사용을 권장하지 for_ij { /*do stuff*/; } for_i { /*do stuff*/; } ,이처럼 사용할 수 있습니다 #define f

    3

    1답변

    토큰 붙여 넣기를 사용하여 C에서 간단한 일반 구조를 정의하려고합니다. 의 예는 다음과 같습니다 : - 나의 이해 토큰 붙여 넣기 인해 PARAMATERS의 삽입에 선 2 및 5에 필요하며, 반대의 이유로 4 호선 필요가 없습니다으로 #define VECTOR(type, dimension, name) \ typedef struct Vector_##

    2

    1답변

    왜 작동하지 않습니까? (실행을 원하지 않는 주장이 아닙니다 ...)? #define OS_MACOSX 0 #if defined(OS_MACOSX) fructose_assert(1==2); #endif

    4

    1답변

    크로스 플랫폼 개발을 쉽게하기위한 조건부 정의가 많은 프로젝트가 있습니다. 그러나 나는 Doxygen이 모든 정의를 추출하도록 설득하는 문제를 가지고 있는데, 단지 평가를 거친 것들을 선택하기 때문입니다. 예를 들어 다음 코드에서 Doxygen은 TARGET_X86_64을 표시하지만 TARGET_ARM64은 표시하지 않습니다. #if defined(_M_A

    2

    2답변

    __DATE__ 또는 __TIME__을 헤더 파일에 사용하면 해당 헤더 포함에 대한 전처리 기 결과가 다소 다를 수 있습니다. 헤더 파일의 __DATE__ 또는 __TIME__을 사용하면 one-definition-rule을 위반하는 상황이 있습니까? 후속 조치 : assert 헤더가 one-definition-rule을 위반합니까?