linux windows跨平台C++例子
来源:互联网 发布:在哪里可以找到数据 编辑:程序博客网 时间:2024/04/29 16:01
跨平台这里就定义了一个宏,如果该宏在windows上则定义,如果在linux上则不定义。
跨平台开发只需要改一个地方即可:将#define __Win32__ 1注释掉即表示在linux上开发,如果将其保留,则表示在windows上开发 。
同时linux上需要多些一个makefile文件。
注意:linux下默认定义了宏__linux__
#pragma once#define __Win32__ 1#ifdef __Win32__#include "targetver.h"#include <stdio.h>#include <tchar.h>#include <iostream>using namespace std;#include <process.h>#include <Windows.h>#else#include <unistd.h>#include<pthread.h>#include <iostream> using namespace std; #endif
#include "common.h"#include "OSThread.h"int main(int argc, char* argv[]){COSThread osThread;osThread.Start();cout << "press any key to exit\n" << endl;int n;cin >> n;return 0;}
#pragma once#include "common.h"class COSThread{public:COSThread(void);~COSThread(void);bool Start();protected:#ifdef __Win32__static unsigned int __stdcall _Entry(void* inThread);#elif __linux__static void* _Entry(void* inThread); #endifprivate:#ifdef __Win32__unsigned int fThreadID;#elif __linux__pthread_t fThreadID;#endif};
#include "OSThread.h"COSThread::COSThread(void){}COSThread::~COSThread(void){}bool COSThread::Start(){#ifdef __Win32__unsigned int theId = 0; // We don't care about the identifierfThreadID = _beginthreadex( NULL, // Inherit security0, // Inherit stack size_Entry, // Entry function(void*)this, // Entry arg0, // Begin executing immediately&theId );#elif __linux__ pthread_attr_t* theAttrP = NULL;int err = pthread_create((pthread_t*)&fThreadID, theAttrP, _Entry, (void*)this);#endifreturn true;}#ifdef __Win32__unsigned int __stdcall COSThread::_Entry( void* inThread ){int nCOunt = 0;while(true){cout << "value:" << nCOunt++ << endl;Sleep(1000);}}#endif#ifdef __linux__void* COSThread::_Entry( void* inThread ){int nCOunt = 0;while(true){cout << "value:" << nCOunt++ << endl;::usleep(1000 * 1000);}}#endif
main.out:g++ test123.cpp OSThread.cpp common.h -lpthread -o a.out
0 0
- linux windows跨平台C++例子
- C 文件夹遍历(Windows + Linux)跨平台
- windows linux 源码跨平台
- 在windows平台上搭建linux C 开发环境
- 跨平台(WIndows, Linux, VxWorks) getTickCount实现
- 跨平台的EVENT事件 windows linux
- 跨平台的EVENT事件 windows linux
- 跨平台移植 linux<—>windows
- visualgdb windows linux 跨平台编译
- 跨平台linux, windows, android系统识别
- C++跨平台例子
- windows 平台下 生成Dump文件例子
- windows平台probuf协议socket通信例子
- windows平台probuf协议socket通信例子
- linux c mysql例子
- Windows平台下搭建Obcject-C平台
- 为什么要在Linux平台上学C语言?用Windows学C语言不好吗?
- c语言002——c语言在不同平台下运行(linux,windows)
- 搭建Spring SpringMVC Mybatis 框架(一)
- eclipse配置maven
- Linux 忘记密码解决方法
- Android Studio中如何创建帧动画文件(animation-list文件)
- linux常用命令
- linux windows跨平台C++例子
- Java 并发:Lock 框架详解
- HDU1312 Red and Black(DFS)
- Linux实战教学笔记12-linux三剑客之sed命令精讲
- 动态生成SQL语句,对数据操作
- 学生信息管理
- 【HDU5775】【树状数组】Bubble Sort 题解
- noi-1689-数组逆序重放
- Linux nginx+rtmp服务器配置