C, C++ 및 Java 코드 기반에서 코드 정리, 서명/부호 비교 비교, 정적 분석 실행 등을 수행합니다. 우리가 얻고있는 경고의 하나는 warning: ISO C does not permit named variadic macros
그리고 그 동반자가 나는 문제를 해결하기 위해 C99 standard variadic macro를 사용하는 C 코드에서
#define TEST(X, ...) X ## __VA_ARGS__ // (1)
#define TEST(X, args...) X ## args // (2)
기능이 있습니까?의 차이점이 있습니까? (즉, 특정 경우 더 좋은 방법으로 사용할 수 있습니다). 또한 C++ 11에 포함 된 구문이 모두 있습니까?
그래서 GCC에서 잘 작동하지만 Microsoft의 C++ 컴파일러에서는 작동하지 않는 매크로가 있습니다. 나는 누군가가 해결 방법을 알기를 바랄 것입니다, 또는 아마 그것이 왜 이런 식으로 행동하는지 설명 할 수 있습니다. 이 매크로는 정확히 "표준"이 아니지만 정말로 도움이 될 것입니다. GCC는 위의 확장 방법은 다음과 struct MyStructur
이 코드 고려 __VA_ARGS__을 확장하지 않습니다 #define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)
예상 출력은 모두 매크로 X = 1 and VA_ARGS = 2, 3, 그리고 그게 내가 GCC와지고있어 무엇을
"매크로화 된"매크로 ("#define name value, value, value"형식의 매크로)가 있습니다.이 매크로를 매크로에 전달하고 싶지만 오류가 발생하면 . 예 : 시각 CI의 GET에서 void fn(int a, int b, int c){ return; }
#define MACRO_1(a, b, c) fn(a, b, c)
#define M
내가 여기 붙어있어 ... #define CONCAT(a,b) BOOST_PP_STRINGIZE(BOOST_PP_CAT(a,b)) #define CONCAT1(a,b,c) CONCAT(CONCAT(a,b),c) and so on. 어떻게 내가 20 개의 인자를하더라도 CONCAT 매크로를 생성 할 수 있습니까? 내가 사용할 수 있습니다 BOOST_PP_SE
variadic 매크로로 보낸 첫 번째 실제 매개 변수를 가져 오려고합니다. 이것은 내가 뭘하려하고, 이는 VS2010에서 작동하지 않습니다 : 다른 한편으로 #define FIRST_ARG(N, ...) N
#define MY_MACRO(...) decltype(FIRST_ARG(__VA_ARGS__))
내가 FIRST_ARG이 MY_MACRO로 전
우리 C/C++ 프로젝트는 SWIG의 모든 기능을 자유롭게 파이썬 스크립트에서 사용할 수 있도록 새로운 내부 스크립트를 사용하고 있습니다. SWIG는 가변 함수를 잘 감쌀 수 없으므로 로거 함수를 질식시킵니다. #include <iostream>
void LogPrint(char *file, int line, char* msg)
{
std::
내 전 처리기 매크로 #define dble double
/* Just something that converts x to a double precision float.
static_cast used as an illustration: */
#define dble(x) static_cast<double>(x)
내가 그 오버로드가 C 표준 전