php源码分析之PHPAPI宏的作用

在PHP源码中,我们经常会看到很多函数前面有个PHPAPI,但这是什么呢?

于是我在php源码/main/php.h中找到了它的定义

#ifdef PHP_WIN32
#    include "tsrm_win32.h"
#    include "win95nt.h"
#    ifdef PHP_EXPORTS
#        define PHPAPI __declspec(dllexport)
#    else
#        define PHPAPI __declspec(dllimport)
#    endif
#    define PHP_DIR_SEPARATOR ‘\\‘
#    define PHP_EOL "\r\n"
#else

#define PHPAPI __declspec(dllexport)

说明PHPAPI是一个宏,在编译过程中会替换掉后面的__desclspec(dllexport)

那__desclspec(dllexport)是干嘛的呢?为什么要用这个呢?

于是我在网上找了相关资料,大概是:

__desclspec(dllexport)是c++的语法

函数前添加PHPAPI也就是__desclspec(dllexport)使该函数能被别的程序调用什么的

具体我也不是很清楚,先这么着吧,以后深入学习一下,毕竟对C++不是很熟悉。

时间: 2025-01-01 14:58:32

php源码分析之PHPAPI宏的作用的相关文章

【ListViewJSON】【com.demo.app.api】【JSONProvider】源码分析及其在工程中作用

源码如下: package com.demo.app.api; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap

【ListViewJSON】【com.demo.app.common】【StringUtils】源码分析及其在工程中作用

源码如下: package com.demo.app.common; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Pattern; import org.json.JSONArray; import org.json.JSONException; import

【ListViewJSON】【com.demo.app.api】【ApiClient】源码分析及其在工程中作用

源码如下: package com.demo.app.api; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Map; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import

【ListViewJson】【com.demo.app】【AppConfig】源码分析及其在工程中作用

源码如下: package com.demo.app; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; import android.content.Context; import android.content.SharedPreferences; import android.preference.Prefere

【ListViewJSON】【com.demo.app.common】【FileUtils】源码分析及其在工程中作用

源码如下: package com.demo.app.common; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; imp

【ListViewJSON】【com.demo.app】【AppManager】源码分析及其在工程中作用

AppManager.java源码如下: package com.demo.app; import java.util.Stack; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; /** * 应用程序Activity管理类:用于Activity管理和应用程序退出 * @version 1.0 * @created 2012-3-21 */ publi

【ListViewJSON】【com.demo.app.common】【ImageUtils】源码分析及其在工程中作用

首先源码: package com.demo.app.common; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.I

【ListViewJSON】【com.demo.app.common】【UIHelper】源码分析及其在工程中作用

源码如下: package com.demo.app.common; import java.util.regex.Pattern; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.grap

【ListViewJson】【com.demo.app】【AppException】源码分析及其在工程中作用

源码如下: package com.demo.app; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.lang.Thread.UncaughtExceptionHandler; import java.net.ConnectException; import java.net.SocketException; i