/*------------ 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#源码(自学时顺便创建的):双击exe文件即可找出同文件夹下所有cs类型文件,选择文件对应的序号后回车即可编译,如果编译出错会返回错误内容。另外资源分数随时会变, 若免费请到:...
Mini-C 编译器KAIST CS420 编译器设计 2015 Spring20130598 郑允宗如何使用要求JavaJava制作get 柏油设置 make ... 返回不同类型的值。 不同类型的表达式之间的算术/比较运算。 注意比较结果(>, <, >=,
C ++和文档编译器代码索引演示目标这是一个命令行工具,用于使用Markdown for C ++从注释生成HTML和文档中的索引代码。“编译器” 这里的所有...t 函数返回类型推导声明时的替代类型推导可变模板二进制文字 在模板temp
编译器现在托管堆上分配一块内存空间(空间大小为对象中包含的值类型变量所占空 间总和外加一个方法表指针和一个SyncBlockIndex),然后把ageInt拷贝到这个空间中,再返回该空间的引用地址。接下来第13行则是拆箱 ...
函数的尾随返回类型 命名空间检查 标准支持(并非详尽无遗): C89,C99 C11 _Bool , _Noreturn , _Alignof , _Alignas _Generic , _Static_assert 功能支持: 浮点类型 无符号整数 char , short , long和...
该词法分析器能够实现:有正确的单词流输出(类型码、坐标、单词的值);能够检查词法是否有错误(输出词法错误如果没有错误,返回 0,如果有错误,需要报告词法错误在源程序中的位置。能够越过错误,分解下一个单词...
1、基本内容(成绩范围:“中”、“及格”或“不及格”) (1)扩充赋值运算:+= 和 -= ...(3)扩充函数:① 有返回值和返回语句;② 有参数函数。 (4)增加一维数组类型(可增加指令)。 (5)其他典型语言设施。
这与仅实现“抽象”类型或表示形式取决于体系结构的类型的语言有所不同。 程序员可以决定数据表示的细节,包括诸如“字节顺序”,位的确切放置和打包之类的事情。 在处理数据布局的外部表示(例如,通信协议或设备...
词法分析器采用的工具是自动化生成工具 ...C语言中的关键字(它们都是保留字)包括:基本类型关键字 int、float、char,分支与循环语句涉及的 if、else、while返回语句 return,还有输入输出语句关键字 Print、Read。
此过程假定一个字符串,其中包含任意数量的sexprs,然后返回正确表示输入的抽象语法树列表。 此类AST由reader.ml中定义的sexpr类型表示。 标签解析器 标签解析器从sexprs的AST转换为表达式的AST,并在此过程中执行...
C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中
如何用C#动态编译、执行代码 ...表示从编译器返回的编译结果。 CompiledAssembly:获取或设置以编译的程序集,Assembly类型。 大致了解以上知识之后,就可以使用C#动态的编译并执行代码了,以下是一段示例程序:
尾置返回类型特性和普通函数不样的是,lambda 表达式可以省略返回类型,由编译器推断,并且不需要使 decltype由编译器推断,返回类型为 bool若 la
课程设计-基于C++语言实现的PL0语言编译器项目源码(含详细项目说明).zip 实现需求 (已经实现的加粗) ## 课内实验 对PL/0作以下修改扩充: * (1)增加单词(只实现词法分析部分): **保留字 ELSE,FOR,TO,DOWN...
1)添加了double类型,及其数组。 2)实现了do while语句 3)使用嵌入java代码的方式实现了自行构造语法树,节点类ANode请自行实现 ANode类很简单,如果不要实现其它功能,直接用DefaultMutableTreeNode就行了。 ...
uvm编译器 uVM的脚本编译器 C / C ++的基本语法差异 类型转换为: value@type ,例如,从int到byte为... void返回类型被省略。 function f ( ) { } function int g ( ) { return 0 ; } 数组和引用修饰符附加到类型的末
与构造函数不同,它们可以返回其返回类型的任何子类型的对象 它们减少了创建参数化类型实例的冗长 缺点 如果只提供静态工厂方法,则没有公共或受保护构造函数的类不能被子类化(鼓励使用组合而不是继承)。 它们不...
这是一个小实验,展示了使用C ++ 14 auto返回类型和模板可以走多远。 C ++ 14具有如此强大的类型推导功能,可以将Python转换为C ++,而不必担心python中缺少类型注释。 只有一小部分Python在运行,您将遇到许多错误...
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 有参属性 ...
Eventual单子 ... 然而,在一个简单的实现中,编译器在文件中的这一点还没有达到或处理bar的定义,因为它在foo之后,因此还不知道bar的参数或返回类型。 为了解决这个问题,几乎所有的编译器都会多次遍