积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

2015年3月18日 #

原文转载自:http://www.uml.org.cn/c++/200902104.asp 一篇讲解宏预编译的内容。
posted @ 2015-03-18 09:56 Jacc.Kim 阅读(100) | 评论 (0)编辑 收藏

2015年1月20日 #

转自:http://c.biancheng.net/cpp/html/326.html

相关函数:fstat, lstat, chmod, chown, readlink, utime

头文件:#include <sys/stat.h>   #include <unistd.h>

定义函数:int stat(const char * file_name, struct stat *buf);

函数说明:stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中。

下面是struct stat 内各参数的说明:
struct stat
{
    dev_t st_dev; //device 文件的设备编号
    ino_t st_ino; //inode 文件的i-node
    mode_t st_mode; //protection 文件的类型和存取的权限
    nlink_t st_nlink; //number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.
    uid_t st_uid; //user ID of owner 文件所有者的用户识别码
    gid_t st_gid; //group ID of owner 文件所有者的组识别码
    dev_t st_rdev; //device type 若此文件为装置设备文件, 则为其设备编号
    off_t st_size; //total size, in bytes 文件大小, 以字节计算
    unsigned long st_blksize; //blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.
    unsigned long st_blocks; //number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.
    time_t st_atime; //time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、utime、read、write 与tructate 时改变.
    time_t st_mtime; //time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、utime 和write 时才会改变
    time_t st_ctime; //time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、权限被更改时更新
};

先前所描述的st_mode 则定义了下列数种情况:
1、S_IFMT 0170000 文件类型的位遮罩
2、S_IFSOCK 0140000 scoket
3、S_IFLNK 0120000 符号连接
4、S_IFREG 0100000 一般文件
5、S_IFBLK 0060000 区块装置
6、S_IFDIR 0040000 目录
7、S_IFCHR 0020000 字符装置
8、S_IFIFO 0010000 先进先出
9、S_ISUID 04000 文件的 (set user-id on execution)位
10、S_ISGID 02000 文件的 (set group-id on execution)位
11、S_ISVTX 01000 文件的sticky 位
12、S_IRUSR (S_IREAD) 00400 文件所有者具可读取权限
13、S_IWUSR (S_IWRITE)00200 文件所有者具可写入权限
14、S_IXUSR (S_IEXEC) 00100 文件所有者具可执行权限
15、S_IRGRP 00040 用户组具可读取权限
16、S_IWGRP 00020 用户组具可写入权限
17、S_IXGRP 00010 用户组具可执行权限
18、S_IROTH 00004 其他用户具可读取权限
19、S_IWOTH 00002 其他用户具可写入权限
20、S_IXOTH 00001 其他用户具可执行权限上述的文件类型在 POSIX 中定义了检查这些类型的宏定义
21、S_ISLNK (st_mode) 判断是否为符号连接
22、S_ISREG (st_mode) 是否为一般文件
23、S_ISDIR (st_mode) 是否为目录
24、S_ISCHR (st_mode) 是否为字符装置文件
25、S_ISBLK (s3e) 是否为先进先出
26、S_ISSOCK (st_mode) 是否为socket 若一目录具有sticky 位 (S_ISVTX), 则表示在此目录下的文件只能被该文件所有者、此目录所有者或root 来删除或改名.


返回值:执行成功则返回0,失败返回-1,错误代码存于errno。

错误代码:
1、ENOENT 参数file_name 指定的文件不存在
2、ENOTDIR 路径中的目录存在但却非真正的目录
3、ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接
4、EFAULT 参数buf 为无效指针, 指向无法存在的内存空间
5、EACCESS 存取文件时被拒绝
6、ENOMEM 核心内存不足
7、ENAMETOOLONG 参数file_name 的路径名称太长


范例
#include <sys/stat.h>
#include <unistd.h>
main()
{
    struct stat buf;
    stat("/etc/passwd", &buf);
    printf("/etc/passwd file size = %d \n", buf.st_size);
}

执行:
/etc/passwd file size = 705

posted @ 2015-01-20 19:36 Jacc.Kim 阅读(421) | 评论 (0)编辑 收藏

2014年11月14日 #

     摘要: 原文转载自:http://blog.csdn.net/callbackfunc/article/details/7233894 本例通过新建一个MFC规则DLL并新建一个MFC对话框程序调用它,演示MFC规则DLL的创建及调用。(VS2010环境下实例代码亲测可编译通过) 一、MFC规则DLL项目 1.创建MFC规则DLL 2.新建global.cpp(新建此文件没有特殊意义,仅用...  阅读全文
posted @ 2014-11-14 10:02 Jacc.Kim 阅读(7274) | 评论 (0)编辑 收藏

2014年11月13日 #

 1 void CLogService::kkLog2(const char* pszName, const char* fmt, ) {
 2     cocos2d::CCFileUtils *pCCFileUtils = cocos2d::CCFileUtils::sharedFileUtils();
 3 #if defined(WIN32) || defined(_WIN32)
 4     SSString path = getExePath().c_str();
 5     path += "log/";
 6 #elif defined(IOS) || defined(__APPLE__)
 7     SSString path = pCCFileUtils->getWritablePath();
 8     path += "log/";
 9 #else
10     SSString path = "/mnt/sdcard/external-sd/";
11 #endif
12 
13     SSString filename = path + pszName;
14 
15     va_list ap;
16     va_start(ap, fmt);
17     char buf[1024];
18     vsprintf(buf, fmt, ap);
19     va_end(ap);
20 
21     std::string strTime;
22     ___getTime(strTime);
23     strTime += "    ";
24 
25 #if defined(_WIN32) || defined(WIN32)
26     std::string strLogText = strTime + buf + "\r\n";
27     ::OutputDebugStringA((LPCSTR)strLogText.c_str());
28 #endif
29 
30     // ensure the path is exist
31     _create_dir(path.c_str());
32 
33     FILE *fp = fopen(filename.c_str(), "ab+");
34     if(fp) {
35         fwrite(strTime.c_str(), strTime.length(), 1, fp);
36         fwrite(buf, strlen(buf), 1, fp);
37         fputs("\r\n", fp);
38         fclose(fp);
39     }
40 }
posted @ 2014-11-13 10:43 Jacc.Kim 阅读(417) | 评论 (0)编辑 收藏

 1 void CShopData::generateWebDataSaveFileName(std::string &strFileName) {
 2 
 3     CCFileUtils *pCCFileUtils = CCFileUtils::sharedFileUtils();
 4 #if defined(WIN32) || defined(_WIN32)
 5     SSString path = "";
 6 #elif defined(IOS) || defined(__APPLE__)
 7     SSString path = pCCFileUtils->getWritablePath();
 8     //path += "log/";
 9 #else
10     SSString path = "/mnt/sdcard/external-sd/";
11 #endif
12 
13     strFileName = path.c_str();
14     strFileName += g_pcszWebDataSaveFile;
15 
16     CWebUrlConfig *pUrlCfg = CWebUrlConfigInstance::singleton();
17     std::string strGameId = pUrlCfg->getWebUrlAddress("gameid");
18     strFileName = strFileName + strGameId + ".json";
19 
20 
21 //     strFileName = g_pcszWebDataSaveFile;
22 //     CWebUrlConfig *pUrlCfg = CWebUrlConfigInstance::singleton();
23 //     std::string strGameId = pUrlCfg->getWebUrlAddress("gameid");
24 //     strFileName = strFileName + strGameId + ".json";
25 }
posted @ 2014-11-13 10:42 Jacc.Kim 阅读(123) | 评论 (0)编辑 收藏

2014年10月21日 #

     摘要: 直接上代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 #include "stdafx.h"  2 #include <fstream>&nbs...  阅读全文
posted @ 2014-10-21 09:49 Jacc.Kim 阅读(1311) | 评论 (0)编辑 收藏

2014年9月19日 #

原文转载自:http://blog.csdn.net/shulianghan/article/details/18964835

一篇非常不错的,讲解 java与c++交互、以及使用ndk编并最终用eclipse链接成最终包的流程。原文太长,在此,仅留下原文链接。
posted @ 2014-09-19 10:17 Jacc.Kim 阅读(150) | 评论 (0)编辑 收藏

2014年9月18日 #

原文转载自:https://software.intel.com/zh-cn/blogs/2013/12/17/android-android-sdk-manager

跟燕青一起学Android应用开发(一):安装Android开发环境一文中,笔者简单的介绍了如何安装Android开发环境。将安装环境搭建好之后,我们需要配置Android SDK Manager,本篇博客将着重解说如何配置Android SDK Manager。

Android SDK Manager是Eclipse的一个重要配置,在安装目录下打开eclipse/eclipse.exe执行文件,选择“Windows”菜单下的子菜单项“Android SDK Manager”,如图1所示。

图1

 

在Android SDK Manager中,Android SDK Tools, Android SDK Platform-tools和Android SDK Platform是必须要安装的,如图2所示,其他的项目可以自选。

图2

在本篇博客中,Android4.4(API19)做为安装项目,读者选择它,点击右下角的安装按钮可以开始安装。

 

在安装的时候,我们可能会遇到一个错误,类似信息是: ” Missing SDK platform Android, API 19”,笔者折腾很很久才发现,这个主要的原因是ADT太老。什么?!在跟燕青一起学Android应用开发(一):安装Android开发环境一文中,笔者不是下载了最新的ADT,怎么可能太老呢?!没错,笔者也为此思考了半天,后来发现虽然ADT是最新的,但是里面的部分内容还是陈旧的。那么如何搞定呢?

 

不急,很简单,只要升级一下eclipse就可以了,如图3所示。打开“Help“菜单中的“Check for Updates”子菜单,耐心等待一下吧。

图3

Content.jar包会在耐心的等待中被升级完毕,现在在试试看能否安装了?

 

哈哈哈,估计某人一脸的微笑了吧J

 

对于其他包的安装,只要在Android SDK Manager中选中它们,点击右下角的安装按钮,你就可以泡杯咖啡,翘起二郎腿慢慢享受一段快乐时光了J。


posted @ 2014-09-18 15:44 Jacc.Kim 阅读(2406) | 评论 (0)编辑 收藏

2014年3月31日 #

文章转载自:http://blog.csdn.net/antoinette/article/details/2112671


导读: 
  声明导出函数: 
  DLL内的函数分两种:只在DLL内部调用的、DLL导出函数——供应用程序调用 
  声明导出函数两种方法: 
  (1)在函数声明中加上extern"C" int _declspec(dllexport)add(int x,int y);//一定要加上extern "C" 
  (2)采用模块定义(.def)文件声明。.def文件为链接器提供了有关被链接程序的导出、属性和其他信息。 
  MFC AppWizard为MFC DLL创建一个.def文件,而Win32 DLL,用户必须自己创建.def文件。 
  .def定义示例代码如下: 
  dll.def:导出DLL函数 
  LIBRARY dllTest 
  DESCRIPTION "math" 
  EXPORTS 
  GlobleVar DATA 
  add @1 
  sub @2 
  .def文件的规则为: 
  (1)LIBRARY语句指出DLL的名字 
  (2)EXPORTS语句后列出一系列函数名称。可以在导出函数后加@n,表示函数序号。 
  (3);表示注释,且注释不能和语句共享一行。 
  (4)可选部分——DESCRIPTION语句,原来描述DLL的用途。 
  (5)变量名 DATA:导出全局变量 
  DLL的调用(加载)方式: 
  (1)动态调用(显式链接) 
  LoadLibrary() 
  GetProcAddress() 
  FreeLibrary() 
  (2)静态调用(隐式链接) 
  由编译系统完成对DLL的加载和应用程序结束时对DLL的卸载。需要做两个工作: 
  a:将编译dll工程所得的.lib和.dll文件放入调用dll工程所在的路径。 
  包含.lib文件:#pragma comment(lib,"dllTest.lib") 
  or project->setting->link->... 
  b:声明导入函数,extern "C" int _declspec(dllimport) add(int x,int y)中的_declspec(dllimport)//must add extern "C" 
  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1881088 

本文转自 
http://blog.csdn.net/blueshelly/archive/2007/11/12/1881088.aspx
posted @ 2014-03-31 09:40 Jacc.Kim 阅读(384) | 评论 (0)编辑 收藏

2014年3月28日 #

众所周知,用stringstream实现数值型与string进行互转是十分方便的。
但它不是万能的。有着许多限制。下面就列出几点让人比较郁闷的,也是问题比较大条的坑,大伙需警惕。
坑 1:
如果待转换的数值型为整型,且值为0时,则转换出来的字符串去并不是:"0"。
调试跟踪后,发现最终结果是一个,类似:""(即:空字符串),却并非空字符串的东西。
亦不是:"\0"或"\n"或" ",到现在本人仍不清楚结果是什么东东。

坑 2:
对于十六进制,无法正常转换。

坑 3:
对于待转换的内容中,含有非[0..9]与[.]的内容,则转一般都会出错。(甚者,可能会蹦)
posted @ 2014-03-28 11:21 Jacc.Kim 阅读(379) | 评论 (0)编辑 收藏