小编Dra*_*ion的帖子

Windows 7命令提示符:如何从命令行执行批处理脚本?

我正在使用Windows 7,我的问题是从控制台(cmd.exe)运行此文件:

W:\software\projects\myproject\build\msvc\build.bat
Run Code Online (Sandbox Code Playgroud)

当我手动移动到包含该文件的文件夹并使用以下命令序列从那里运行它时,它可以工作:

W:\>cd software
W:\software>cd projects
W:\software\projects>cd myproject
W:\software\projects\myproject>cd build
W:\software\projects\myproject\build>cd msvc
W:\software\projects\myproject\build\msvc>build.bat
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试以任何这些方式从根目录运行该文件时:

W:\>software\projects\myproject\build\msvc\build.bat
W:\>call software\projects\myproject\build\msvc\build.bat
W:\>@call software\projects\myproject\build\msvc\build.bat
W:\>"software\projects\myproject\build\msvc\build.bat"
W:\>call "software\projects\myproject\build\msvc\build.bat"
W:\>@call "software\projects\myproject\build\msvc\build.bat"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

我很确定你不必导航到包含该文件的文件夹,以便在我使用Windows XP时运行它(当然我可能是错的),但这显然是Windows的情况7.或者我错过了什么?

cmd batch-file command-prompt windows-7

9
推荐指数
1
解决办法
5万
查看次数

Visual C++内联x86程序集:访问"this"指针

根据MSDN文档,当使用类函数的默认__thiscall调用约定时,"this"指针存储在ECX中.尽管在翻译常规C++代码时肯定会出现这种情况,但在尝试使用内联汇编访问"this"时遇到了问题.

这是测试程序:

#include <cstdio>

class TestClass
{
    long x;

    public:
        inline TestClass(long x):x(x){}

    public:
        inline long getX1(){return x;}
        inline long getX2()
        {
            _asm
            {
                mov eax,dword ptr[ecx]
            }
        }
};
int main()
{
    TestClass c(42);

    printf("c.getX1() = %d\n",c.getX1());
    printf("c.getX2() = %d\n",c.getX2());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

两个Get函数的翻译如下:

?getX1@TestClass@@QAEJXZ (public: long __thiscall TestClass::getX1(void)):
  00000000: 8B 01              mov         eax,dword ptr [ecx]
  00000002: C3                 ret

?getX2@TestClass@@QAEJXZ (public: long __thiscall TestClass::getX2(void)):
  00000000: 8B 01              mov         eax,dword ptr [ecx]
  00000002: C3                 ret
Run Code Online (Sandbox Code Playgroud)

我认为这两个功能完全相同是可以肯定的.不过,这是程序的输出:

c.getX1() = …
Run Code Online (Sandbox Code Playgroud)

c++ x86 this inline-assembly visual-c++

6
推荐指数
2
解决办法
4890
查看次数