gpt4 book ai didi

c++ - 宏导入外部函数

转载 作者:行者123 更新时间:2023-11-30 05:18:08 24 4
gpt4 key购买 nike

我有一个创建函数的宏(程序集标签)定义为

define make(name) asm ("%0: hlt" :: "m"(name));

但是为了调用这个函数我必须先导入它

make(exit);
extern "C" void exit()

为什么宏不能声明(导入)函数?

最佳答案

您可以使用续行反斜杠轻松地在宏中包含多行:

#define MAKE(name)                \
asm ("%0: hlt" :: "m"(name)); \
extern "C" void (name)();

line-continuation 所做的只是让整个事情成为一行。所以展开时:

MAKE(foo)

它将扩展到单行:

asm ("%0: hlt" :: "m"(foo)); extern "C" void (foo)();

在上面的宏中使用它们当然有缺点。最值得注意的是,您不能将它作为非大括号循环或 if 中的语句。但是对于像您想要的那样的宏,这无关紧要,因为它可能无论如何都会在全局范围内使用(或者它没有多大意义)。

关于c++ - 宏导入外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41872330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com