Treasure101 发表于 2025-10-25 15:06

创建的宏在cubeIDE中处理时出错。

创建了一个宏,可以在vscode中使用GNU11标准处理,在cubeIDE中处理时出错。


#define PRINTARRAYSET(type, name) void printArray_##name(type* arr, size_t size) {\

for (size_t i = 0; i < size; i++)\

   printf("%d, ",arr);\

printf("\r\n");\

}

#define PRINTARRAYSETLONG(type, name) void printArray_##name(type* arr, size_t size) {\

for (size_t i = 0; i < size; i++)\

   printf("%ld, ",arr);\

printf("\r\n");\

}

#define PRINTARRAYSETFLOAT(type, name) void printArray_##name(type* arr, size_t size) {\

for (size_t i = 0; i < size; i++)\

   printf("%f, ",arr);\

printf("\r\n");\

}

PRINTARRAYSET(char , char)

PRINTARRAYSET(signed char ,signed_char)

PRINTARRAYSET(short int , short_int)

PRINTARRAYSET(int , int)

PRINTARRAYSETLONG(long , long)

PRINTARRAYSET(unsigned char , unsigned_char)

PRINTARRAYSET(unsigned int , unsigned_int)

PRINTARRAYSET(short unsigned int , short_unsigned_int)

PRINTARRAYSETLONG(long unsigned int , unsigned_long)

PRINTARRAYSETFLOAT(float , float)

PRINTARRAYSETFLOAT(double , double)

#define PRINTARRAY(arr, size) _Generic(arr,\

char*: printArray_char,\

signed char*: printArray_signed_char,\

short int*: printArray_short_int,\

int*: printArray_int,\

long*: printArray_long,\

unsigned char*: printArray_unsigned_char,\

short unsigned int*: printArray_short_unsigned_int,\

unsigned int*: printArray_unsigned_int,\

unsigned long*: printArray_unsigned_long,\

float*: printArray_float,\

double*: printArray_double\

)(arr, size)

没有太阳的晴天 发表于 2025-10-27 15:39

STM32CubeIDE 可能不支持某些 C11 特性

classroom 发表于 2025-10-27 15:41

用函数指针表
页: [1]
查看完整版本: 创建的宏在cubeIDE中处理时出错。