在内联汇编中定义函数并从c ++

时间:2018-08-28 16:17:52

标签: c++ inline-assembly

我正在尝试编译以下链接中提及的代码。我收到以下链接器错误:

/tmp/ccUVLIZ0.ltrans0.ltrans.o:在函数“ main”中:

:((。text.startup + 0x5):对“ one”的未定义引用

collect2:错误:ld返回1个退出状态

Equivalent for GCC's naked attribute

链接器没有看到程序集定义?

以下代码:

#include <stdio.h>

asm("_one:              \n\
    movl $1,%eax    \n\
    ret             \n\
");

int one();

int main() {
    printf("result: %d\n", one());
    return 0;
}

1 个答案:

答案 0 :(得分:1)

对于这些技巧,您需要明确提供功能说明

#include <stdio.h>

asm("one:              \n\
    movl $1,%eax    \n\
    ret             \n\
");

extern "C" int one();

int main() {
    printf("result: %d\n", one());
    return 0;
}

您可能会在中找到有关外部“ C”的更多说明 What is the effect of extern "C" in C++?