所以我最近讨论了我的工作,其中我质疑使用双重防守对一名后卫的影响.双防护的意思如下:
头文件"header_a.hpp":
#ifndef __HEADER_A_HPP__
#define __HEADER_A_HPP__
...
...
#endif
Run Code Online (Sandbox Code Playgroud)
将头文件包含在头文件或源文件中的任何位置时:
#ifndef __HEADER_A_HPP__
#include "header_a.hpp"
#endif
Run Code Online (Sandbox Code Playgroud)
现在我明白在头文件中使用guard是为了防止多次包含已经定义的头文件,这是常见的并且有很好的文档记录.如果已经定义了宏,则编译器会将整个头文件视为"空白",并防止双重包含.很简单.
我不明白的问题是使用#ifndef __HEADER_A_HPP__和#endif围绕着#include "header_a.hpp".同事告诉我,这为夹杂物增加了第二层保护,但是如果第一层绝对完成工作(或者它是什么?),我看不出第二层是如何有用的.
我能想到的唯一好处是它可以直接阻止链接器找到文件.这是否意味着改善编译时间(没有提到作为一个好处),或者在这里有什么其他工作我没有看到?
所以我在我的PHP脚本中有这个函数,它应该将日期作为8位整数,例如01042012转换01/04/2012为显示.
目前我正在尝试使用php的date()功能如下:
$int = 01042012;
$date = date("d/m/Y", $int);
Run Code Online (Sandbox Code Playgroud)
而不是它显示$date的值.01/04/201213/01/1970
这是因为date()想要传递给它的日期是在unix时间吗?如果是这样,是否可能有更直接的方法在字符2和4之后拆分int并只插入斜杠,然后重新组合它?就像explode()那样,但我没有任何性格可以分开.
我有一个类的对象列表Author,我想根据作者的一个属性搜索这个作者列表name,当我收到一个匹配项时,我想返回Author用于创建实例的实例另一个类,它需要Author作为其构造函数的一部分.
解释它的更好方法是:
author getAuthor(String arg_name)
{
foreach (author auth in authorList)
{
if (auth.name == arg_name)
{
return auth;
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我意识到这个特定代码确实有效,但是有更好的方法来执行此操作吗?