标签: c

如何在C中使用GDI +?

免责声明:我只是开始使用C语言,所以很可能我错过了一些明显的东西,或者没有想到正确的方法!:)

我究竟如何在纯C中使用GDI +?据我所知,GDI +已经包装了为C++制作的对象,但在它下面是一个平面API,可通过gdiplusflat.hC友好的头部访问.

我的问题是当我#include它时,我得到以下错误:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(30) : error C2143: syntax error : missing '{' before '__stdcall'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2146: syntax error : missing ')' before identifier 'brushMode'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2061: syntax error : identifier 'brushMode'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2059: syntax error : ';'
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2059: syntax error : ','
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gdiplusflat.h(31) : error C2059: syntax error : …
Run Code Online (Sandbox Code Playgroud)

c winapi gdi+ gdi

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

accept()线程安全吗?

我正在用C编写一个简单的网络服务器,用于我正在做的课程.一个要求是我们实现一个线程池来处理使用pthreads的连接.

我知道我将如何大致这样做(在主线程中调用accept并将文件描述符传递给freee线程),但是我的朋友提出了一种替代方法,而不是我想到的方法:在前面创建我的所有线程,并让他们全部循环接听电话.接受的想法是阻止所有空闲线程,当连接进入时,只给出一个文件描述符.然后当一个给定的线程完成一个连接时,它会循环回来并阻塞一个调用再次接受.使用accept()作为信号量的调用.这样可以简化其实现的实现,因为您不需要跟踪哪些线程正忙,哪些线程已准备好进行连接.理论上它也可能是较低的延迟,因为线程可以立即开始执行.

我的问题是,这样安全吗?我打算实施它并尝试一下,但我还没准备好,我很想知道答案.我在谷歌和这里搜索stackoverflow,但找不到任何人这样做.接受线程安全吗?我假设这种方法会有更多的开销,因为你一直在运行所有的线程,这两种方法只是简单的内存/延迟权衡吗?

编辑:我不确定这应该是社区维基,如果它应该是道歉,我找不到按钮:P

c sockets pthreads threadpool

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

如何在Linux上用C++计算SHA-512哈希?

是否有可用于在Linux上计算SHA-512哈希值的标准库或常用库?

我正在寻找一个C或C++库.

c c++ linux hash sha512

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

fopen(),fclose()究竟是如何工作的?

我只是想知道函数fopen,fclose,socket和closesocket.当调用fopen或打开套接字时,到底发生了什么(尤其是内存方式)?

打开文件/套接字而不关闭它们会导致内存泄漏吗?

第三,如何创建套接字,它们看起来像内存一样明智?

我也对操作系统(Windows)在读取套接字和发送数据方面的作用感兴趣.

c sockets windows fopen fclose

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

如何在没有竞争条件的情况下将两个32位计数器读为64位整数

存储器0x100和0x104是两个32位计数器.它们代表64位定时器并且不断递增.

如何正确读取两个内存地址并将时间存储为64位整数?

一个错误的解决方

x = High
y = Low
result =  x << 32 + y
Run Code Online (Sandbox Code Playgroud)

(该程序可以换出,同时低溢出...)

附加要求:
仅使用C,无汇编
总线为32位,因此无法在一条指令中读取它们.
您的程序可以随时切换上下文.
没有可用的互斥锁或锁.

一些高级别的解释是可以的.代码没有必要.谢谢!

c embedded

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

为什么C++与C兼容?

在阅读了大量的C++文章和教程后,我经常看到"C++ 不是 C!" 这句话.或某些变体.如果这是真的,为什么C++试图与C兼容?当然这只是鼓励C程序员编写糟糕的C++代码?我只是这个领域的新手,所以我可以随意轰炸我,理由是我错误地认为C++应该让它成为思想并忘记C. Ell.

c c++

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

使用%u和C中的%d打印内存地址之间的区别?

我读了一本C书.要打印出变量的内存地址,有时书籍会使用:

printf("%u\n",&n);
Run Code Online (Sandbox Code Playgroud)

有时,作者写道:

printf("%d\n",&n);
Run Code Online (Sandbox Code Playgroud)

结果总是一样,但我不明白两者之间的差异(我知道%u表示无符号).

有人可以详细说明吗?

非常感谢.

c unsigned

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

valgrind mac os mem泄漏

今天我在我的Mac os x 10.6上安装了valgrind并尝试测试它.事实证明,系统中存在奇怪的内存泄漏.我所做的只是创建简单的c文件,获取一些堆内存并立即释放它.当我跑valgrind时,它表现出类似的东西

Realfrees-MacBook-Pro:C Realfree$ valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./a.out 
==2621== Memcheck, a memory error detector
==2621== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==2621== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info
==2621== Command: ./a.out
==2621== 
--2621-- ./a.out:
--2621-- dSYM directory is missing; consider using --dsymutil=yes
==2621== 
==2621== HEAP SUMMARY:
==2621==     in use at exit: 88 bytes in 1 blocks
==2621==   total heap usage: 2 allocs, 1 frees, 92 bytes allocated
==2621== …
Run Code Online (Sandbox Code Playgroud)

c macos valgrind

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

C中的更多链接列表

在我开始我想讲清楚,我不想回答我的家庭作业的问题,我只是想,如果有人能真正解释正是我的教练在这种分配(最好是简单化版)要求,也许一个有用的推动正确的方向.我在这个话题上遇到了很多麻烦,每当我问导师时,我发现他比我更困惑我.

所以,这是作业:

1.添加一个新函数insertN(struct list*x,int num,int pos,int n),它将在pos位置插入n个整数num的副本,如果可能的话(如果pos太大,采取适当的行动) .我在这里感到困惑的主要是他所说的位置pos.

这是我正在使用的代码 - 由我的老师编写,我必须修改它.

#include<stdio.h>
#include<stdlib.h>

struct list {
    int data;
    struct list * next;
        };

struct list *slist;

/*adds a node at the end of the linked list*/
void insert(struct list *x,int num){
  /*if the list is empty*/
  if(x==NULL){
    /*create first node*/
    slist=malloc(sizeof(struct list));
    slist->data=num; 
    slist->next=NULL;
    }
  else{
    /*go to the last node*/
    while(x->next!=NULL) x=x->next;
    /*add node at the end*/
      x->next=malloc(sizeof(struct list));
      x->next->data=num;
      x->next->next=NULL;

  }
}


void display(struct list *x){
  /*traverse the …
Run Code Online (Sandbox Code Playgroud)

c pointers structure linked-list

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

c中的整数大小取决于什么?

整数的大小取决于什么?

C中的int变量的大小是否依赖于机器或编译器?

c

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