首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内联程序集错误中的编译器错误:- C2400:‘第二个操作数’中内联汇编程序语法错误;找到'newline‘

内联程序集错误中的编译器错误:- C2400:‘第二个操作数’中内联汇编程序语法错误;找到'newline‘
EN

Stack Overflow用户
提问于 2013-11-18 17:36:40
回答 2查看 7.8K关注 0票数 8

我测试了一些C代码,发现了一个奇怪的编译器错误

下面的代码不会编译

代码语言:javascript
运行
复制
#include<stdio.h>
void main()
{
    int length=6;    
    __asm
    {
        mov eax,length
    }
}

Visual报告以下错误

代码语言:javascript
运行
复制
test.c(7) : error C2400: inline assembler syntax error in 'second operand'; 
found 'newline'

但是,我注意到如果我将变量的名称更改为其他东西--比如lengths --那么一切都很好,下面的代码编译起来没有任何困难

代码语言:javascript
运行
复制
#include<stdio.h>
void main()
{
    int lengths=6;    
    __asm
    {
        mov eax,lengths
    }
}

我尝试过其他编译器,如Digital和Intel,但是到处都无法编译第一段代码。

有什么问题吗?在其他地方是否有length的另一个定义。

我还想补充一点,这是一个单一的文件,而不是一个项目,所以不可能有任何多个声明。

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-18 17:42:05

见此处:http://msdn.microsoft.com/en-US/library/wxh0awwe%28v=vs.80%29.aspx

具体来说

长度、大小和类型运算符在内联程序集中的意义有限。它们不能与DUP运算符一起使用(因为您不能用MASM指令或运算符定义数据)。但是您可以使用它们来查找C或C++变量或类型的大小:

票数 7
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20054124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档