使用C代码typedef代替什么优势(如果有的话)#define?
举个例子,使用是否有任何好处
typedef unsigned char UBYTE
Run Code Online (Sandbox Code Playgroud)
过度
#define UBYTE unsigned char
Run Code Online (Sandbox Code Playgroud)
当两者都可以用作
void func()
{
UBYTE byte_value = 0;
/* Do some stuff */
return byte_value;
}
Run Code Online (Sandbox Code Playgroud)
显然,预处理器会尝试扩展#define它所看到的任何地方,这不会发生在a typedef,但在我看来,这似乎不是任何特定的优势或劣势; 我想不出如果出现问题,使用不会导致构建错误的情况.
这几年我用vim编程,我使用了ctags.我正在使用一个相当大的C/C++包,我需要找到函数的定义.我通常使用grep + ctags.最近我尝试使用cscope而不是ctags并将其与Vundle一起安装.我看到一些文件出现以下错误
E568: duplicate cscope database not added
Run Code Online (Sandbox Code Playgroud)
我搜索了网络,发现了这个:https: //blogs.oracle.com/natarajan/entry/avoiding_duplicate_cscope_database_error 它不起作用.
我怎样才能解决这个问题?
一般问题:给定一组提交,我如何找到所有提交的提交列表作为祖先,或相关地,包含所有这些提交的第一个提交.
我可以通过查找git branch --contains <commit>集合中所有提交返回的分支来查找包含提交的分支(类似标记),但是git rev-list没有--contains选项.实际上,我正在寻找一种方法来组合常规--contains参数git rev-list,并将输出限制为包含所有列出的提交的提交,而不是其中任何一个(这是如何--contains正常工作).
具体的例子:鉴于提交a,b,c,我怎么能找到的第一个承诺是在其祖先的所有三个提交?
例如,给定下面的树,我如何找到标记为X的提交?
* (master)
|
X
|\
a *
| |
b c
|/
*
|
*
Run Code Online (Sandbox Code Playgroud)
我假设我可以做一些魔法git rev-list,并且可能涉及到<commit1>...<commit2>符号,但我不能比这更进一步.
git log --graph在我的Linux内核副本上运行时,我看到图中的下划线看起来不应该存在.
这个下划线是什么意思?
我正在使用的具体命令是:
git log --graph --decorate --pretty=oneline --abbrev-commit --all --date-order
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
我已经尝试在gitk中查看图中的这个区域,但似乎没有任何与众不同的东西.
我不认为这只是显示一个分支点,因为我希望它在右边呈现,而不是在左边(左边应该匹配上面的图像):
I see: I'd expect for
normal branching:
\ \ \ \ \ \
/ / / / / /
| _ / | / /
| / |/ /
| | | |
| | | |
Run Code Online (Sandbox Code Playgroud) 我的Git存储库有两个文件,alpha并且beta内容相同.
如果我alpha在我的主分支中删除,并在我的功能分支中编辑它,那么当我将master合并到功能中时,我就会发出冲突警告.假设我通过删除来解决这个问题alpha.
如果我然后将我的功能分支重新命名为master使用git rebase master,alpha则会被删除,但我alpha现在应用了对功能分支所做的更改beta!我收到了一个冲突警告但很高兴解决了自动合并而没有阻止我提交审核的提交.
有趣的是,如果我执行a git rebase -i并且只接受默认值,beta则不进行编辑,我将解决在合并时解决的相同冲突.
然后是三个相关问题:
我在Win7上运行Cygwin上的Git 1.7.9.我把一个成绩单放在pastebin上显示这个从git init一个空目录开始,如果有人想看到自己的详细信息(由于长度我不会在这里发布).
例如:
git commit -am "Something"
git notes append -m "Dark "
git commit -am "Something"
git notes append -m "Side"
git rebase -i
# now I squash two commits and I expect to see "Dark Side" here
# but it show that note is undefined
git notes show
Run Code Online (Sandbox Code Playgroud) 我使用git-svn来保存共享Subversion存储库的克隆.最近有人编辑的修订提交的信息(一拉 这太问题)后,我曾git svn fetch编那个版本.如何更正我的Git克隆以获得正确的提交消息?
我原本期望git svn reset接下来git svn fetch重新提交这个提交并更新一些东西,让我只需要修复我的本地分支,但实际上并没有做任何事情; 在git svn fetch不重新获取我重置为提交.
(是的,我认为更改提交消息是一个坏主意,但这不是我可以控制的.)
更新:我尝试了sleske建议的过程(事实上,我在问这个问题之前尝试过,但我只是为了以防再次尝试),但没有运气.我得到如下输出:
me_and@centos ~/code ((358a2dd...)) Fri 16 Jan 15:31:27
$ git svn reset -p 55102
r55094 = 25d126219f7eeddfc7d0842704c7efcc0443dd70 (refs/remotes/origin/branchname)
me_and@centos ~/code ((358a2dd...)) Fri 16 Jan 15:33:06
$ git svn fetch
me_and@centos ~/code ((358a2dd...)) Fri 16 Jan 15:33:08
$
Run Code Online (Sandbox Code Playgroud)
没有输出git svn fetch(或者自从我上次运行以来是否存在提交,但它只是获取新提交,而不是重新提交旧提交),特别rereading是在sleske的示例中没有消息.
如果相关,我使用的是Git v2.0.4.
更新2:.git/config下面稍作修改:
[core]
repositoryformatversion = 0
filemode = …Run Code Online (Sandbox Code Playgroud) 我正在尝试set使用类似于下面的代码在Python中对该对象进行子类化,但是我无法找到一个合理的定义__repr__来使用.
class Alpha(set):
def __init__(self, name, s=()):
super(Alpha, self).__init__(s)
self.name = name
Run Code Online (Sandbox Code Playgroud)
我想以__repr__这样的方式定义,我可以获得以下输出:
>>> Alpha('Salem', (1,2,3))
Alpha('Salem', set([1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)
但是,如果我不覆盖__repr__,我得到的输出忽略了name值...
>>> Alpha('Salem', (1,2,3))
Alpha([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
...如果我覆盖__repr__,我无法直接访问集合中的值而无需创建新的集合实例:
class Alpha(set):
…
def __repr__(self):
return "%s(%r, %r)" % (self.__class__.__name__, self.name, set(self))
Run Code Online (Sandbox Code Playgroud)
这是有效的,但为此创建一个新的集合实例__repr__将被处理似乎笨重和低效我.
有没有更好的方法来定义__repr__这种类?
编辑:我遇到的另一个解决方案:我可以在本地存储集合.它似乎比其他选项稍微整洁(为每次调用__repr__或使用某种形式的字符串操作创建和销毁某些东西),但对我来说似乎仍然不太理想.
class Alpha(set):
def __init__(self, name, s=()):
super(Alpha, self).__init__(s)
self.name = name
self._set = set(s)
def __repr__(self): …Run Code Online (Sandbox Code Playgroud) 运行git svn rebase后出现以下错误:'update-index --refresh:command return error:1'
有任何想法吗?以下是整个输出.
$ git svn rebase --dry-run
xxx-iphone/xxx_prototype2/xxx_prototype2.xcodeproj/project.pbxproj: needs update
xxx-iphone/xxx_prototype2/xxx_prototype2.xcodeproj/project.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstate: needs update
xxx-iphone/xxx/xxx_prototype2/CouponBookViewController.h: needs update
xxx-iphone/xxx_prototype2/xxx_prototype2/CouponBookViewController.m: needs update
xxx-iphone/xxx_prototype2/xxx_prototype2/EmailListViewController.m: needs update
xxx-iphone/xxx_prototype2/xxx_prototype2/HomeViewController.h: needs update
xxx-iphone/xxx_prototype2/xxx_prototype2/ParentCategoryTableViewCell.xib: needs update
xxx-rails/.rvmrc: needs update
xxx-rails/Gemfile: needs update
xxx-rails/app/controllers/admin_page/categories_controller.rb: needs update
xxx-rails/app/controllers/application_controller.rb: needs update
xxx-rails/app/controllers/categories_controller.rb: needs update
xxx-rails/app/controllers/service_provider_profiles_controller.rb: needs update
xxx-rails/app/models/category.rb: needs update
xxx-rails/app/models/like.rb: needs update
xxx-rails/app/models/service_provider_profile.rb: needs update
xxx-rails/config/application.rb: needs update
xxx-rails/db/development.sqlite3: needs update
update-index --refresh: command returned error: 1
Run Code Online (Sandbox Code Playgroud) 我从Web服务中获取了一个较大的JSON字符串(11MB)。当我使用JSONKit解析数据时,我的应用程序达到70MB,收到内存警告,并且应用程序崩溃。
如何解析此数据?
git ×6
git-log ×2
git-svn ×2
c ×1
cscope ×1
ctags ×1
git-branch ×1
git-merge ×1
git-notes ×1
git-rebase ×1
git-rev-list ×1
ios4 ×1
iphone ×1
python ×1
sbjson ×1
set ×1
standards ×1
subclassing ×1
svn ×1
svn-propset ×1
vim ×1