Code Bye

为什么总是提示没有定义

问一下下这个在linux下编译(gcc -o app.out *.c),为什么总是提示
(.text+0x4): undefined reference to `_value”
#include “stdio.h”
long __attribute__((__stdcall__)) INTERLOCKED_DEC(long volatile* _value)
{
__asm__ __volatile__
(
“movl           $_value, %ecx\n\t”
“movl       $0xFFFFFFFF, %eax\n\t”
“lock xadd  %eax, (%ecx)\n\t”
“dec        %eax\n\t”
);
}
int main()
{
long count = 123;
printf(“count:%d\n”,count);
INTERLOCKED_DEC(&count);
printf(“count+1:%d\n”,count);
return 0;
}
解决方案

40

   “movl           $_value, %ecx\n\t”
这句错了吧,C语言中的变量,不可以直接传到汇编中吧, 汇编中$后接的是立即数

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么总是提示没有定义