如何将字符串作为参数传递给C宏

时间:2019-06-23 19:31:37

标签: c macros

我有一个字符串数组char version[][8] = {"new", "old", "latest", "oldest", "ancient"};

我有一个宏

#define FS(file, attr) \
        filesys(file, file_ ##attr## _ops) \

如何将字符串数组version的成员传递到FS宏中?

2 个答案:

答案 0 :(得分:2)

您不能。宏是编译时间,编译器将无法以所需方式拼接字符串。而是尝试使用strcat(),只是不要忘记您需要跟踪字符串数组的大小。

答案 1 :(得分:2)

您不能在宏中使用任何C功能,因为预处理器对C和C语言一无所知。

请记住,这是编译时令牌替换。

改为使用普通功能