从C语言中的宏函数返回一个字符串,可以通过以下方法实现:
#include<stdio.h>
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define CONCAT(a, b) a##b
#define CONCAT_EXPAND(a, b) CONCAT(a, b)
#define RETURN_STRING(str) CONCAT_EXPAND(str, "")
int main() {
printf("%s\n", RETURN_STRING(Hello, world!));
return 0;
}
#include<stdio.h>
#define RETURN_STRING(str) {sizeof(str) - 1, str}
typedef struct {
size_t length;
const char *data;
} String;
int main() {
String str = RETURN_STRING("Hello, world!");
printf("%.*s\n", (int)str.length, str.data);
return 0;
}
在这两种方法中,第一种方法使用字符串字面量将宏参数转换为字符串,而第二种方法则使用数组来存储字符串。两种方法都可以在C语言中实现从宏函数返回字符串的功能。
领取专属 10元无门槛券
手把手带您无忧上云