问题列表 - 第2168页

为什么我的编译保护不能防止多个定义包含?

我有一个头文件xh,它包含多个*.c源文件.此头文件定义了一些结构变量.

我在头文件的开头添加了多个包含防护措施:

#ifndef X_H
#define X_H
...
..
//header file declarations and definitons.


#endif//X_H
Run Code Online (Sandbox Code Playgroud)

在构建时,我得到与多个定义相关的链接器错误.我理解这个问题.

  1. 不会像我一样在头文件的顶部有多重包含防护,防止头文件xh的多个包含,从而避免xh中存在的变量的多个定义?

  2. #pragma曾经不适用于这个特定的编译器,那么解决方案是什么?有人把这个答案发给了一个类似的问题.它似乎对我不起作用.这个解决方案如何运作?

c linker multiple-inclusions

45
推荐指数
5
解决办法
4万
查看次数

一个进程如何拦截Linux上另一个进程的stdout和stderr?

我有一些应该停止运行的脚本,但永远都是这样.

有什么办法可以用可读的方式弄清楚他们写的是什么?stdout和stderr?

例如,我试过这样做

$ tail -f /proc/(pid)/fd/1
Run Code Online (Sandbox Code Playgroud)

但这并没有真正起作用.无论如何,这是一个长镜头.

还有其他想法吗?因为看到这一点,它本身就是非常冗长和难以理解的.

注意:我对他们的输出感兴趣,而不是其他任何东西.我有能力自己搞清楚其他事情; 这个问题只关注在启动它之后访问正在运行的进程的stdout和stderr .

linux stdout

43
推荐指数
5
解决办法
4万
查看次数

停止bash脚本时运行命令

我怎样才能在bash脚本中执行命令,当用户停止脚本时(使用ctrl -c)?

目前,我有这个:

afplay file.mp3

while true:
do osascript -e "set volume 10"
end
Run Code Online (Sandbox Code Playgroud)

但是我想killall afplay在用户完成它时执行它,无论它是command-c还是其他按键.

macos bash

5
推荐指数
1
解决办法
1531
查看次数

递归计算支配树的有效方法?

我正在使用具有路径压缩的Lengauer和Tarjan算法来计算有数百万个节点的图的支配树.算法非常复杂,我不得不承认我没有花时间完全理解它,我只是使用它.现在我需要计算根节点的直接子节点的支配树,并可能将图形向下递减到重复此操作的某个深度.即,当我为根节点的子节点计算支配树时,我想假装根节点已从图中移除.

我的问题是,是否有一个有效的解决方案,利用已经在根节点的初始支配树中计算的直接支配者信息?换句话说,我不想从头开始为每个孩子,因为整个过程非常耗时.

天真地看起来一定是可能的,因为在图表的内部会有很多节点,这些节点在它们之上只有一点点,并且不受图形顶部变化的影响.

顺便说一句:在统治者树的主题是由编译人员"拥有"并且在经典图论的书中没有提到它,这是奇怪的.我正在使用它的应用程序 - 我的FindRoots java堆分析器 - 与编译器理论无关.

澄清:我在这里谈论有向图.我所指的"根"实际上是具有最大可达性的节点.我已经更新了上面的文本,用"graph"替换了对"tree"的引用.我倾向于将它们视为树木,因为形状主要是树等.该图实际上是java堆中的对象,您可以想象它是合理的层次结构.我发现主导树在进行OOM泄漏分析时很有用,因为你感兴趣的是"是什么让这个物体保持活力?" 答案最终是它的统治者.支配树允许你<ahem>看到木头而不是树木.但有时很多垃圾漂浮在树顶,所以你有一个直接在它下面有数千个孩子的根.对于这样的情况,我想尝试计算根植于根的每个直接子节点(在原始图形中)的支配树,然后可以进入下一级别,依此类推.(我试着暂时不担心反向链接的可能性:)

algorithm compiler-theory graph-theory

16
推荐指数
1
解决办法
2941
查看次数

如何将DateTime从JSON转换为C#?

可能重复:
如何将UNIX时间戳转换为DateTime,反之亦然?

我有以下课程:

[DataContractAttribute]
public class TestClass
{
  [DataMemberAttribute]
  public DateTime MyDateTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是JSON:

{ "MyDateTime":"1221818565" }
Run Code Online (Sandbox Code Playgroud)

JSON正在从PHP Web服务返回.

我需要做的是将该epoch字符串转换为有效的C#DateTime.这样做的最佳方法是什么?

我可以做这个:

[IgnoreDataMemberAttribute]
public DateTime MyDateTime { get; set; }

[DataMemberAttribute(Name = "MyDateTime")]
public Int32 MyDateTimeTicks
{
  get { return this.MyDateTime.Convert(...); }
  set { this.Created = new DateTime(...); }
}
Run Code Online (Sandbox Code Playgroud)

但问题是,MyDateTimeTicks是公共的(将其更改为private会导致序列化过程中出现异常)

c# serialization json silverlight-2.0

17
推荐指数
2
解决办法
3万
查看次数

如何从SharePoint中的"网站操作"菜单中删除项目?

如何自定义"网站操作"菜单以删除或重命名"标准"菜单项?网站操作菜单项定义在哪里?

sharepoint moss

4
推荐指数
1
解决办法
5887
查看次数

如何将Unix时间戳转换为DateTime,反之亦然?

有这个示例代码,但它开始讨论毫秒/纳秒问题.

自从C#中的Unix纪元以来,同样的问题出现在MSDN上,.

这是我到目前为止所得到的:

public Double CreatedEpoch
{
  get
  {
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
    TimeSpan span = (this.Created.ToLocalTime() - epoch);
    return span.TotalSeconds;
  }
  set
  {
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
    this.Created = epoch.AddSeconds(value);
  }
}
Run Code Online (Sandbox Code Playgroud)

c# unix datetime data-conversion epoch

715
推荐指数
16
解决办法
55万
查看次数

如何确定目录是否在同一分区上

假设我有一个输入文件和一个目标目录.如何确定输入文件是否与目标目录位于同一硬盘驱动器(或分区)上?

我想要做的是复制一个文件,如果它是一个不同的,但移动它,如果它是相同的.例如:

target_directory = "/Volumes/externalDrive/something/"
input_foldername, input_filename = os.path.split(input_file)
if same_partition(input_foldername, target_directory):
    copy(input_file, target_directory)
else:
    move(input_file, target_directory)
Run Code Online (Sandbox Code Playgroud)

感谢CesarB的回答,该same_partition功能实现了:

import os
def same_partition(f1, f2):
    return os.stat(f1).st_dev == os.stat(f2).st_dev
Run Code Online (Sandbox Code Playgroud)

python linux filesystems macos

6
推荐指数
1
解决办法
1143
查看次数

DataGridView排序,例如.NET中的BindingList <T>

BindingList<T>在我的Windows窗体中使用了一个包含" IComparable<Contact>"联系人对象列表的窗体.现在我希望用户能够按网格中显示的任何列进行排序.

在线MSDN上有一种描述如何实现基于BindingList<T>允许排序的自定义集合的方法.但是,是否有一个Sort-event或者某些东西可以在DataGridView中捕获(或者,甚至更好,在BindingSource上)以使用自定义代码对底层集合进行排序?

我真的不喜欢MSDN描述的方式.另一种方法是我可以轻松地将LINQ查询应用于集合.

.net sorting data-binding bindinglist winforms

11
推荐指数
3
解决办法
3万
查看次数

OS X:确定给定路径的"废纸篓"位置

只需将文件移动到~/.Trash/不起作用,就像外部驱动器上的文件操作系统一样,它会将文件移动到主系统驱动器中.

此外,还有其他条件,如外部驱动器上的文件被移动到/Volumes/.Trash/501/(或当前用户的ID是什么)

给定文件或文件夹路径,确定垃圾文件夹的正确方法是什么?我想这种语言非常无关紧要,但我打算使用Python

python filesystems macos

1
推荐指数
2
解决办法
3387
查看次数