关于c ++的问题

时间:2010-07-14 12:54:50

标签: c++

在c ++中经常使用这种表达式

#ifdef __BORLANDC__

  #pragma argsused

#endif

并且还给出了c ++中汇编程序代码的代码

#ifdef __BORLANDC__

  #pragma argsused

#endif



#include <iostream>

using namespace std;



int main( int argc, char * argv[] )

{

    int Number1, Number2, Result;



    __asm

    {

        MOV Number1, 248 // Initialize Number1

        MOV Number2, 405 // Initialize Number2

        MOV EAX, Number1 // Put the value of Number1 in the EAX register

        ADD EAX, Number2 // Add the value of Number2 to the content of EAX

        MOV Result, EAX  // Put the content of EAX into Result

    }                    // That's it



    cout << "Number1 = " << Number1 << endl;

    cout << "Number2 = " << Number2 << endl;

    cout << "\nAfter adding Number1 to Number2," << endl;

    cout << "Result  = " << Result << endl;



    return 0;

}

我如何检查我的c ++是否有汇编编译器?

4 个答案:

答案 0 :(得分:1)

#ifdef通常用作header guards。这个结构的用法要宽得多,我刚才提到了最基本的一个。至于“汇编程序编译器”,我相信大多数遵循该标准的C ++编译器应该能够处理它。请参阅示例here

答案 1 :(得分:0)

据我所知,只有Borland编译器能够识别__asm关键字。我不认为有一种标准的方法可以在C或C ++中编写内联汇编

更新:刚刚检查过,结果证明它远非真实。 MS编译器示例:link text

答案 2 :(得分:0)

您必须通过ifdef指令检查编译器名称并阅读有关汇编程序支持的文档。还要检查一个平台,我知道VS C ++不支持64位版本的汇编程序。

答案 3 :(得分:0)

实际上比这更糟糕。大多数C ++实现都有一些方法可以进行程序集插入。但是,这些(显然)不能移植到其他平台,并且根据您使用的说明,甚至可能无法移植到他们 工作的平台可用的每个处理器上。