C++开发笔记

基本语法特性

#ifndef #define #endif条件编译

含义

#ifndef预处理指令:如果宏没有定义,则编译下面代码

格式

格式是这样的:
#ifndef <标识>
#define <标识>
……
#endif

作用

防止头文件被重复引用

无名命名空间

标准C++引入命名空间,除了可以避免成员的名称发生冲突之外,还可以使代码保持局部性,从而保护代码不被他人非法使用。如果你的目的主要是后者,而且又为替命名空间取一个好听、有意义、且与别人的命名空间不重名的名称而烦恼的话,标准C++还允许你定义一个无名命名空间。你可以在当前编译单元之中(无名命名空间之外),直接使用无名命名空间中的成员名称,但是在当前编译单元之外,它又是不可见的。

格式

namespace {
    int a;  
    void f(){/*...*/}  
}

等价于

namespace $$$  
{  
    int a;  
    void f(int a){/* */} 
}  
using namespace $$$; 

其中$$$由编译器指定。

使用示例

#include <iostream>
using namespace std;
namespace  
{  
    int a=0;  
    void f(int a){
        cout << "the value of a is : "<< a << endl;
    } 
}  
int main()
{
   f(a+1);
   return 0;
}

输出
the value of a is : 1

编译构建

make和make clean

make之前使用make clean清除之前的编译结果,否则某些代码修改不会同步!

sprintf和strcpy的区别

sprintf 跟printf 在用法差不多,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。
sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] … );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。
注:错误用法sprintf(destination, source),如果source包含%s等格式化参数,但是source对象
字符串函数- strcpy
原型:extern char *strcpy(char *dest,char *src);
用法:#include

猜你喜欢

转载自blog.csdn.net/sunxianghuang/article/details/78949610