宏导入外部函数
Macro import an extern function
我有一个创建函数的宏(程序集标签)定义为
define make(name) asm ("%0: hlt" :: "m"(name));
但是为了调用这个函数,我必须先像导入它一样
make(exit);
extern "C" void exit()
为什么宏不能declare (import)
函数?
您可以使用行继续反斜杠轻松地在宏中包含多行:
#define MAKE(name)
asm ("%0: hlt" :: "m"(name));
extern "C" void (name)();
行延续所做的只是使整个事情成为一条线。因此,当它被扩展时:
MAKE(foo)
它将扩展到单行:
asm ("%0: hlt" :: "m"(foo)); extern "C" void (foo)();
当然,如上所述在宏中使用它们也有缺点。最值得注意的是,您不能将其作为非大括号循环或if
中的语句。但是对于像你想要的宏来说,这并不重要,因为它无论如何都可能会在全局范围内使用(或者它没有多大意义)。
相关文章:
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- C++:函数外部的超时功能
- 如何在函数外部访问函数中局部变量的值?
- 在成员函数外部封闭类的定义中需要默认成员初始值设定项
- 以延长构造函数外部 QT 对象的生存期
- 全局静态变量不"staying defined"函数外部
- C++ 函数外部丢失的指针对象
- 向量大小在构造函数外部恢复为 0
- 删除函数外部的实例化对象
- 在函数外部编写代码
- 为什么我不能添加到方法/函数外部的 ostringstream
- 用于在方法或函数外部声明的变量的内存
- SDL2 在函数外部加载字体会引发错误
- 如何在具有多态性的函数外部创建对象
- 在函数外部声明对象,将其作为引用传递,然后在函数内部创建它
- 向量未在函数C++外部更新
- 访问函数外部的堆栈对象
- 在c++中访问函数外部的数组
- 如何更新函数外部的数组(指向指针)