标签: c

CGPathAddArc与CGPathAddArcToPoint

Apple的CoreGraphics库定义了两个用于描述弧的函数.

  • CGPathAddArc基于中心点,半径和一对角度添加弧.
  • CGPathAddArcToPoint根据半径和一对切线添加弧.

详细信息在CGPath API参考中进行了解释.为什么两个功能?简单方便吗?一个比另一个更有效吗?一个是用另一个定义的吗?

c macos drawing core-graphics

12
推荐指数
2
解决办法
9488
查看次数

Windows CD Burning API

我们需要在使用Borlands Turbo C++开发的C\C++ Windows XP/Vista应用程序中以编程方式将文件刻录到CD.

这样做最简单,最好的方法是什么?我们更喜欢本机Windows API(不依赖于MFC),以便不依赖任何第三方软件/驱动程序(如果有的话).

c c++ windows cd-burning

12
推荐指数
1
解决办法
1万
查看次数

有没有办法在编译时为Java定义一个常量值

当我以前用C/C++编写库时,我养成了使用方法返回编译日期/时间的习惯.这总是被编译到库中,因此可以区分库的构建.我通过在代码中返回#define得到了这个:

C++:

#ifdef _BuildDateTime_
   char* SomeClass::getBuildDateTime() {
      return _BuildDateTime_;
   }
#else
   char* SomeClass::getBuildDateTime() {
      return "Undefined";
   }
#endif
Run Code Online (Sandbox Code Playgroud)

然后在编译时我有一个'-D_BuildDateTime_ =Date在构建脚本中 '.

有没有办法在Java中实现这个或类似的,而无需记住手动编辑任何文件或分发任何单独的文件.

我从同事那里得到的一个建议就是让ant文件在类路径上创建一个文件并将其打包到JAR中并让它通过该方法读取.

类似的东西(假设创建的文件名为'DateTime.dat'):

// I know Exceptions and proper open/closing 
// of the file are not done. This is just 
// to explain the point!
String getBuildDateTime() {
    return new BufferedReader(getClass()
            .getResourceAsStream("DateTime.dat")).readLine();
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这是一个黑客,可以被外面有类似命名文件的人规避/破坏在JAR,但是在类路径上.

无论如何,我的问题是在编译时是否有任何方法将一个常量注入一个类

编辑

我考虑在JAR中使用外部生成的文件的原因是因为这一个库并将嵌入到客户端应用程序中.这些客户端应用程序可能会定义自己的类加载器,这意味着我不能依赖标准的JVM类加载规则.

我个人的偏好是使用serg10建议的JAR文件中的日期.

c c++ java

12
推荐指数
2
解决办法
6329
查看次数

寻找元组匹配算法

我需要在C中实现内存中的字符串元组匹配功能.将有大量的元组列表与不同的操作相关联,并且要与列表匹配大量事件.

元组列表:

("one", "four")
("one")
("three")
("four", "five")
("six")    
Run Code Online (Sandbox Code Playgroud)

事件("一","二","三","四")应匹配列表项("一","四")和("一")和("三")但不匹配("四", "五"而不是("六")

我当前的方法使用所有元组字段值的映射作为使用该值的每个元组的列表的键.有很多冗余哈希和列表插入.

有没有正确或经典的方法来做到这一点?

c algorithm

12
推荐指数
1
解决办法
1558
查看次数

如何通过良好的设计保留堆栈空间?

我正在使用RTOS编程用于RAM有限的嵌入式微控制器.

我经常将我的代码分解为短函数,但每个函数调用都需要更多的堆栈内存.每个任务都需要他的堆栈,这是项目中重要的内存消费者之一.

是否有替代方法可以使代码保持良好的组织和可读性,仍保留内存?

c memory embedded stack rtos

12
推荐指数
4
解决办法
2011
查看次数

C头文件循环

我有几个头文件,归结为:

tree.h中:

#include "element.h"

typedef struct tree_
{
    struct *tree_ first_child;
    struct *tree_ next_sibling;
    int tag;
    element *obj;
    ....
} tree;
Run Code Online (Sandbox Code Playgroud)

和element.h:

#include "tree.h"

typedef struct element_
{
    tree *tree_parent;
    char *name;
    ...
} element;
Run Code Online (Sandbox Code Playgroud)

问题是它们都相互引用,因此树需要包含元素,元素需要包含树.

这不起作用,因为要定义"树"结构,元素结构必须已知,但要定义元素结构,必须知道树结构.

如何解决这些类型的循环(我认为这可能与'前向声明'有关?)?

c include-guards

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

当文件流没有新数据时如何防止fgets阻塞

我有一个popen()函数执行"tail -f sometextfile".只要文件流中有数据显然我可以通过fgets()获取数据.现在,如果没有来自尾部的新数据,fgets()会挂起.我试过ferror()和feof()无济于事.如何在文件流中没有新内容的情况下确保fgets()不会尝试读取数据?

其中一个建议是select().由于这是针对Windows平台选择似乎不起作用,因为匿名管道似乎不起作用(请参阅此文章).

c fgets popen

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

是否可以在不使用函数的情况下初始化const结构?

我在一些C代码中有一个相当简单的const结构,它只包含几个指针,并希望在可能的情况下静态初始化它.我可以,如果是这样,怎么样?

c

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

释放atexit()

在atexit()函数中释放内存有什么意义吗?

我有一个全局变量,在启动后获得malloc.我可以编写一个atexit()函数来释放它,但是当程序退出时系统是否会回收所有内存?

整洁和积极清理自己有什么好处吗?

c memory free atexit

12
推荐指数
6
解决办法
3222
查看次数

结束时带有垃圾字符的字符串数组

我有一个char数组缓冲区,我用它来存储用户将逐个输入的字符.我下面的代码有效,但有一些我无法弄清楚的故障:

  1. 当我执行一个printf来查看Buffer中的内容时,它确实填满了但是我最后得到了垃圾字符
  2. 尽管被声明为char Buffer [8],它不会停留在8个字符;

有人可以向我解释发生了什么,也许我可以解决这个问题?谢谢.

char Buffer[8]; //holds the byte stream
int i=0;

if (/* user input event has occurred */) 
{
        Buffer[i] = charInput;
        i++;

        // Display a response to input
        printf("Buffer is %s!\n", Buffer);

}
Run Code Online (Sandbox Code Playgroud)

输出:

tagBuffer is 1??w!
tagBuffer is 12?w!
tagBuffer is 123w!
tagBuffer is 1234!
tagBuffer is 12345!
tagBuffer is 123456=!
tagBuffer is 1234567!
tagBuffer is 12345678!

tagBuffer是123456789!

c string cstring null-terminated

12
推荐指数
2
解决办法
5万
查看次数