[原]__FILE__宏】的更多相关文章

在vs中__FILE__宏代表了当前文件,如果有/FC那么__FILE__代表了当前文件的全路径!否则只表示当前文件名   参考 https://msdn.microsoft.com/en-us/library/027c4t2s.aspx /FC (Full Path of Source Code File in Diagnostics) Visual Studio 2015   Other Versions   For the latest documentation on Visual St…
情况1:#ifdef _DEBUGvirtual void AssertValid() const;                 //assert(断言)valid(有效的,正确的)virtual void Dump(CDumpContext& dc) const;        //存储上下文#endif 这两个函数是调试用的,第一个函数检查可用性,即是否有效.第二个函数如果未更改的话,最终调用的是Cwnd::Dump();输出窗口类名,标题名等一系列信息(在输出窗口中). #ifdef…
一.函数 函数是一个包含完成一定功能的执行代码段.我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的.外部程序所知道的仅限于输入给函数什么以及函数输出什么.函数提供了编制程序的手段,使之容易读.写.理解.排除错误.修改和维护. 计算1-n的和 #include "stdio.h" void main() { //write once only once 只写一次 ; ;i<=;i++) {…
刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能. 一个经典的例子 使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译.试想这种的情况,有一个文件headerfile.h 它被包含在headerfile1.h中,同时在headerfile2.h 中也被包含了,现在有一个CPP文件,implement.cpp 包含了headerfi…
http://blog.csdn.net/hgl868/article/details/7058906 替代字符串: #define DOWNLOAD_IMAGE_LOG /var/log/png.log #define WGET_IMAGE_(x) "wget -b -c -P ./media/video -a " x " -i  mp4url.txt" WGET_IMAGE_(DOWNLOAD_IMAGE_LOG)就是 wget -b -c -P ./media…
宏在代码中的使用实例: g_RunLog2("Middleware client for Linux, build:%s %s", __DATE__, __TIME__); 下面详细介绍宏: 在标准C以及各中编译器中定义了一些对象宏, 这些宏的名称以"__"开头和结尾, 并且都是大写字符. 这些预定义宏可以被#undef, 也可以被重定义. 在ANSI C标准中定义了__FILE__,__LINE__,__DATA__,__TIME__,__STDC__等标准的预定…
01: 防止一个头文件被重复包含 #ifndef COMDEF_H#define COMDEF_H//头文件内容#endif 02: 重新定义一些类型防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */typedef…
根据编译条件,Debug时输出带行号的日志,Release时关闭日志 /* XCode LLVM XXX - Preprocessing中Debug会添加 DEBUG=1 标志 */ #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__,…
1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used in the replacement section of a function-like macro.Additionally, it can be used in the replacement section of an object-like macro. The ## operator co…
__FUNCTION__ 宏表示当前所在函数名: __FILE__ 宏表示当前所在文件路径: __LING__ 宏表示当前所在行: 利用对象离开函数时调用析构函数销毁的特点,打印出函数执行结束的信息 代码: #include <iostream> #include <cstdio> class FunctionCallLogger { public: FunctionCallLogger(const char* functionName) { strcpy(m_functionNa…
__FILE__,__LINE__,FUNCTION__实现代码跟踪调试 ( linux 下c语言编程 ) 先看下简单的初始代码:注意其编译运行后的结果. root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件 #ifndef CLOBAL_H #define GLOBAL_H #include int funca(void); int funcb(void); #endif root@xuanfei-desktop:~/cpropram/2#…
使用NSLog的一个风险是:它的运行会占用时间和设备资源. 所以在编译版本前一定不要有nslog. 同时当你的工程中有很多log 输出的时候 查找起来很不方便 ,下面介绍一种方法 可以使我们事半功倍. 解决步骤: 修改<AppName>-Prefix.pch ,增加以下的宏代码 #ifdef DEBUG # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n&q…
目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的宏 1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define  标识符 替换列表 替换列表是一系列的C语言记号,包括标识符.关键字.数.字符常量.字符串字面量.运算符和标点符号.当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录.在文件后面的…
1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define  标识符替换列表 替换列表是一系列的C语言记号,包括标识符.关键字.数.字符常量.字符串字面量.运算符和标点符号.当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录.在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它. 不要在宏定义中放置任何额外的符号,否则它们会被作为替换列表的一部分.一种常见的错误是在宏定义中使用 = : #define N = 100 …
root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H        #define GLOBAL_H        #include <stdio.h>        int funca(void);        int funcb(void);#endifroot@xuanfei-desktop:~/cpropram/2# cat funca.c //函数a#include "global.h&…
01: 防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 02: 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */ typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */ t…
前言: 1)输出日志是会大量损耗系统性能 2)输出的信息很容易会被截取到,导致信息不安全. 所以我们会在发行版(Release)取消所有的Log.如果一行一行地去注释掉Log,显然不是一个明确的选择. 因此我们可以使用宏去自定义Log输出. 最简单的一个例子 #ifdef DEBUG #define GCLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__); #else #define GCLog(...); 输出当前方法名 #define GCMethod(...…
编译器识别预定义的 ANSI/ISO C99 C 预处理宏,Microsoft C++ 实现将提供更多宏.这些预处理器宏不带参数,并且不能重新定义. ANSI 兼容的预定义宏 __FILE__,__LINE__,__func__,__DATE__,__TIME__,__TIMESTAMP__   1 . __FILE__,__LINE__,__FUNCTION__或者__func__ __FILE__:当前程序行所在源文件名称,标准C支持,该宏当做字符串对待: __LINE__:当前程序行所在源…
转:http://www.cnitblog.com/zouzheng/archive/2007/08/31/32691.aspx 先看下简单的初始代码:注意其编译运行后的结果. root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H        #define GLOBAL_H        #include <stdio.h>        int funca(void);        int funcb…
这两天看到一个小练习,要求如下: 在GVIM下,将下面这张图的内容 改成下面这样 并且指出,要用批量操作的方式,不能一行一行的键入 其实第一反应是利用正则表达式来操作,但是让用正则表达式以外的操作方式,查了不少方法,最终发现了VIM的宏,觉得挺有意思的,特地记录一下 宏的基本操作 宏是用来重复执行一组操作的 操作方式为 1.在普通模式下,按q 开启宏操作方式 2.随后输入一个宏名作为寄存器,为了方便,可以输入一个小写字母,但不要用大写字母哟 3.输入要批量操作的内容,VIM会将此时所有的操作记录…
GCC(警告.优化以及调试选项) [介绍] gcc and g++分别是gnu的c & c++编译器   gcc/g++在执行编译工作的时候,总共需要4步   1.预处理,生成.i的文件 预处理器cpp2.将预处理后的文件不转换成汇编语言,生成文件.s 编译器egcs3.有汇编变为目标代码(机器代码)生成.o的文件 汇编器as4.连接目标代码,生成可执行程序 连接器ld 1.总体选项 -E   只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里   面.   例子用法:   gcc…
返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言.......................................................................................................................3 特殊术语.................................................................................…
SQLite的应用 一.简单说明 1.在iOS中使用SQLite3,首先要添加库文件 libsqlite3.dylib 2.导入主头文件 #import <sqlite3.h> 二.具体说明 1.sqlite3_open (1)作用:把一个文件名称传递给他,它会自动检测这个文件是否存在,如果不存在的话,会自动创建相应的文件(这里为数据库文件,刚创建为空). (2)参数:它的第一个参数为文件的名称(需转换为C语言的),第二个参数是数据库的实例,sqlite3 *db:  说明:sqlite3是一…
我们在调试程序的时候,往往需要输出一些日志信息,用到NSLog函数,当我们准备发布程序,需要注释掉NSLog代码,这个时候往往会定义一个宏,在调试的时候,会输出日志,在Release正式版本的时候,会关闭日志输出.代码如下: #ifdef DEBUG #define CLog(format, ...) NSLog(format, ## __VA_ARGS__) #else #define CLog(format, ...) #endif 上面这段代码,是最常见的自定义NSLog的方式,但是上面的…
SQLite3简单介绍 1.ios中数据的存储方式 (1)Plist(NSArray\NSDictionary) (2)Preference(偏好设置\NSUserDefaults) (3)NSCoding(NSKeyedArchiver\NSkeyedUnarchiver) (4)SQLite3 (5)Core Data 说明: 3是版本号,是SQLite的第三个版本. core Data是对SQLite的封装,因为iOS中使用的SQLite是纯C语言的. 2.SQLite (1)什么是SQL…
iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二.具体说明 新建一个项目,在项目的主界面中放四个按钮(分别是,增加.删除.修改.查询). 1.sqlite3_open(<#const char *filename#>, <#sqlite3 **ppDb#>)函数的一些说明: (1)作用:把一个文件名称传递给他,它会自动检测这个文件是…
简单介绍以下几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错.2) __FILE__ 宏在预编译时会替换成当前的源文件名3) __LINE__宏在预编译时会替换成当前的行号4) __FUNCTION__宏在预编译时会替换成当前的函数名称 1.重新定义系统的NSLog,__OPTIM…
Definition: The #define Directive You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #define identifier token-stringopt #define identifier[( identifieropt, ... , identifi…
glibc 和 libc 都是 Linux 下的 C 函数库. libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. ANSI C 和 GNU C 有什么区别呢? ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数.这个库可以根据头文件划分为 15 个部分,其中包括:     <ctype.h>:包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型:    <errno.h>:定…
自定义调试信息的输出 调试信息的输出方法有很多种,  例如直接用printf,  或者出错时使用perror, fprintf等将信息直接打印到终端上, 在Qt上面一般使用qDebug,而守护进程则一般是使用syslog将调试信息输出到日志文件中等等... 使用标准的方法打印调试信息有时候不是很方便,  例如Qt编程, 在调试已有的代码时, 我想在打印调试信息的地方, 把代码位置也打印出来以方便定位错误, 或者需要在调试信息前面加一个前辍, 好方便在调试信息太多的时候可以用grep过滤一下, 仅…