`
anlx27
  • 浏览: 492181 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

不同编译器返回不同类型

阅读更多

/*------------ miscellaneous -----------------------------------------------*/

/**
 * Linkage specification macro
 */
#if !defined(PTAPI_DLL)
 #if defined(BUILD_PTAPI_DLL)
  #if defined(_MSC_VER)
            #if defined(PTAPI_STATIC)
                #if defined __cplusplus
                    #define PTAPI_DLL extern "C"
                #else
                    #define PTAPI_DLL
                #endif
            #else
                #if defined __cplusplus
                    #define PTAPI_DLL extern "C"
                #else
                    #define PTAPI_DLL extern
                #endif
            #endif
  #elif defined(__SYMBIAN32__)
   #if defined(__cplusplus)
    #define PTAPI_DLL extern"C" EXPORT_C
   #else
    #define PTAPI_DLL EXPORT_C
   #endif
  #else
   #if defined(__cplusplus)
    #define PTAPI_DLL extern"C"
   #else
    #define PTAPI_DLL
   #endif
  #endif
 #else
  #if defined(_MSC_VER)
            #if defined(PTAPI_STATIC)
                #if defined __cplusplus
                    #define PTAPI_DLL extern "C"
                #else
                    #define PTAPI_DLL
                #endif
            #else   
       #if defined __cplusplus
        #define PTAPI_DLL extern "C" __declspec(dllimport)
       #else
        #define PTAPI_DLL __declspec(dllimport)
       #endif
            #endif
  #elif defined(__SYMBIAN32__)
   #if defined(__cplusplus)
    #define PTAPI_DLL extern"C" IMPORT_C
   #else
    #define PTAPI_DLL IMPORT_C
   #endif
  #else
   #if defined(__cplusplus)
    #define PTAPI_DLL extern"C"
   #else
    #define PTAPI_DLL
   #endif
  #endif
 #endif
#endif

 

/**
 * Macro for standard call convention
 */
#ifndef PTAPI
#if defined(_MSC_VER)
#if defined(_DOS)
#define PTAPI far
#else
#define PTAPI __stdcall
#endif
#else
#define PTAPI
#endif
#endif

 

/*
nothing doing macros used for better documenting parameter specification
*/

/**
 * This is a definition which has sole purpose of
 * helping readability.  It indicates that formal
 * parameter is an input parameter.
 */
#ifndef IN
#define IN
#endif

/**
 * This is a definition which has sole purpose of
 * helping readability.  It indicates that formal
 * parameter is an output parameter. 
 */
#ifndef OUT
#define OUT
#endif

/**
 * This is a definition which has sole purpose of
 * helping readability.  It indicates that formal
 * parameter is both input and output parameter. 
 */
#ifndef INOUT
#define INOUT
#endif

/**
 * This is a definition which has sole purpose of
 * helping readability.  It indicates that formal
 * parameter is an optional parameter. 
 */
#ifndef OPTIONAL
#define OPTIONAL
#endif


某个.h文件中有这样一段

 

然后.c文件中有PTAPI_DLL  PT_STATUS  PTAPI  PTOpen(。。形参。。。){。函数体。。}

 

经查定义处发现PTAPI_DLL  PT_STATUS  PTAPI只有一个是被定义成long型,其他的均定义为空。经请教别人得知,是为了在不同编译器下返回不同的值。PTAPI_DLL  PT_STATUS  PTAPI只有一个是有效的。

分享到:
评论

相关推荐

    C#开发的C#编译器(终端模式,非图形界面)

    C#开发的C#编译器,附加C#源码(自学时顺便创建的):双击exe文件即可找出同文件夹下所有cs类型文件,选择文件对应的序号后回车即可编译,如果编译出错会返回错误内容。另外资源分数随时会变, 若免费请到:...

    minic:KAIST CS420编译器设计

    Mini-C 编译器KAIST CS420 编译器设计 2015 Spring20130598 郑允宗如何使用要求JavaJava制作get 柏油设置 make ... 返回不同类型的值。 不同类型的表达式之间的算术/比较运算。 注意比较结果(>, <, >=,

    Document:C ++和文档编译器

    C ++和文档编译器代码索引演示目标这是一个命令行工具,用于使用Markdown for C ++从注释生成HTML和文档中的索引代码。“编译器” 这里的所有...t 函数返回类型推导声明时的替代类型推导可变模板二进制文字 在模板temp

    值类型和引用类型的区别

    编译器现在托管堆上分配一块内存空间(空间大小为对象中包含的值类型变量所占空 间总和外加一个方法表指针和一个SyncBlockIndex),然后把ageInt拷贝到这个空间中,再返回该空间的引用地址。接下来第13行则是拆箱 ...

    ucc-c-compiler:用C实现的C编译器

    函数的尾随返回类型 命名空间检查 标准支持(并非详尽无遗): C89,C99 C11 _Bool , _Noreturn , _Alignof , _Alignas _Generic , _Static_assert 功能支持: 浮点类型 无符号整数 char , short , long和...

    编译原理课程设计-基于SLR(1)分析的PASCL编译器.zip

    该词法分析器能够实现:有正确的单词流输出(类型码、坐标、单词的值);能够检查词法是否有错误(输出词法错误如果没有错误,返回 0,如果有错误,需要报告词法错误在源程序中的位置。能够越过错误,分解下一个单词...

    PL/0-编译原理课程设计-PL/0编译器的扩充

    1、基本内容(成绩范围:“中”、“及格”或“不及格”) (1)扩充赋值运算:+= 和 -= ...(3)扩充函数:① 有返回值和返回语句;② 有参数函数。 (4)增加一维数组类型(可增加指令)。 (5)其他典型语言设施。

    esl:一种新的编程语言的编译器

    这与仅实现“抽象”类型或表示形式取决于体系结构的类型的语言有所不同。 程序员可以决定数据表示的细节,包括诸如“字节顺序”,位的确切放置和打包之类的事情。 在处理数据布局的外部表示(例如,通信协议或设备...

    基于C语言实现高级语言子集的编译器【100012140】

    词法分析器采用的工具是自动化生成工具 ...C语言中的关键字(它们都是保留字)包括:基本类型关键字 int、float、char,分支与循环语句涉及的 if、else、while返回语句 return,还有输入输出语句关键字 Print、Read。

    方案编译器

    此过程假定一个字符串,其中包含任意数量的sexprs,然后返回正确表示输入的抽象语法树列表。 此类AST由reader.ml中定义的sexpr类型表示。 标签解析器 标签解析器从sexprs的AST转换为表达式的AST,并在此过程中执行...

    扩充C0编译器要求 北航计算机用

    C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中

    如何用C#动态编译、执行代码

    如何用C#动态编译、执行代码 ...表示从编译器返回的编译结果。 CompiledAssembly:获取或设置以编译的程序集,Assembly类型。 大致了解以上知识之后,就可以使用C#动态的编译并执行代码了,以下是一段示例程序:

    1. lambda 表达式1

    尾置返回类型特性和普通函数不样的是,lambda 表达式可以省略返回类型,由编译器推断,并且不需要使 decltype由编译器推断,返回类型为 bool若 la

    课程设计-基于C++语言实现的PL0语言编译器项目源码(含详细项目说明).zip

    课程设计-基于C++语言实现的PL0语言编译器项目源码(含详细项目说明).zip 实现需求 (已经实现的加粗) ## 课内实验 对PL/0作以下修改扩充: * (1)增加单词(只实现词法分析部分): **保留字 ELSE,FOR,TO,DOWN...

    使用Javacc生成MiniJava编译器的.jj文件

    1)添加了double类型,及其数组。 2)实现了do while语句 3)使用嵌入java代码的方式实现了自行构造语法树,节点类ANode请自行实现 ANode类很简单,如果不要实现其它功能,直接用DefaultMutableTreeNode就行了。 ...

    uvm-compiler:uVM的脚本编译器

    uvm编译器 uVM的脚本编译器 C / C ++的基本语法差异 类型转换为: value@type ,例如,从int到byte为... void返回类型被省略。 function f ( ) { } function int g ( ) { return 0 ; } 数组和引用修饰符附加到类型的末

    java源码期编译器运行时-Effective-JAVA-Summary:JoshuaBloch的EffectiveJava2ndEditio

    与构造函数不同,它们可以返回其返回类型的任何子类型的对象 它们减少了创建参数化类型实例的冗长 缺点 如果只提供静态工厂方法,则没有公共或受保护构造函数的类不能被子类化(鼓励使用组合而不是继承)。 它们不...

    py14:Python至C ++ 14编译器

    这是一个小实验,展示了使用C ++ 14 auto返回类型和模板可以走多远。 C ++ 14具有如此强大的类型推导功能,可以将Python转换为C ++,而不必担心python中缺少类型注释。 只有一小部分Python在运行,您将遇到许多错误...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    9.5 参数和返回类型的指导原则 9.6 常量性 第10章 属性 10.1 无参属性 10.1.1 自动实现的属性 10.1.2 合理定义属性 10.1.3 对象和集合初始化器 10.1.4 匿名类型 10.1.5 System.Tuple类型 10.2 有参属性 ...

    EventualMonad:一个小而简单的 Haskell 库,用于在运行时自动排序依赖项。 非常适合在编写编译器时处理前向引用

    Eventual单子 ... 然而,在一个简单的实现中,编译器在文件中的这一点还没有达到或处理bar的定义,因为它在foo之后,因此还不知道bar的参数或返回类型。 为了解决这个问题,几乎所有的编译器都会多次遍

Global site tag (gtag.js) - Google Analytics