标签: c

如何在Java,C#和/或C中查找无线网络列表(SSID)?

是否有可用的工具包/包可用于查找Java,C#或C for Windows XP +中可用的无线网络列表(SSID)?任何示例代码将不胜感激.

c c# java wireless ssid

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

C语言中switch语句的开销

我是一个相当称职的Java程序员,对C来说很新.我正在尝试优化具有四种操作模式的例程.

我遍历图像中的所有像素,并根据传递的"模式"计算新的像素值.

我的问题是关于两个嵌套for循环中switch语句的开销.我对任何有关基本C语句,数学和逻辑运算的相对效率的文档链接感兴趣.

代码如下:

for (x = 0; x < width; x++) {
        for (y = 0; y < height; y++) {
             switch (mode)                  /* select the type of calculation */
             {
                case 0:
                weight = dCentre / maxDistanceEdge;
                case 1: 
                    weight = (float)x/width;             
                    break;
                case 2: 
                    weight = (float)y/height;
                    break;
                case 3: 
                    weight = dBottomLeft / maxDistanceCorner;
                    break;
                case 4: 
                    weight = dTopRight / maxDistanceCorner;
                    break;
                default: 
                weight = 1;
                break;
            }
             // Calculate the new pixel value given …
Run Code Online (Sandbox Code Playgroud)

c overhead switch-statement

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

遵循原作者的编码风格?即使它太可怕/懒惰/让你的眼睛流血?

当为一个非常古老的,显然不再维护的开源或公共领域项目做贡献时,是否建议练习遵循原作者的编码风格,即使它很糟糕?

更重要的是,有没有理由为什么人们想要遵循原作者的编码风格而不是明显地清理它?

c open-source

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

C99中的易失性语义

我有一些低级代码我写,我需要使用对象为挥发性的问题,但它不一定是这样,我想声明的类型为挥发性(可重用的原因).但是,我可以定义指向结构的限定变体的指针,如以下段中所述.

struct x {
  int bar;
};

struct x foobar;
...
volatile struct x *foo = &foobar;
Run Code Online (Sandbox Code Playgroud)

现在foo实际上是指向该类型对象的指针:

volatile struct x {
  volatile int x;
};
Run Code Online (Sandbox Code Playgroud)

因为volatile适用于所有struct成员.现在我的问题是当一个对象包含指向另一个对象的指针时,如何应用波动性?

struct x {
  struct y *bar;
};
Run Code Online (Sandbox Code Playgroud)

指向x的volatile实例的指针然后将其视为:

volatile struct x {
  struct y * volatile bar;
};
Run Code Online (Sandbox Code Playgroud)

或作为:

volatile struct x {
  volatile struct y * volatile bar;
};
Run Code Online (Sandbox Code Playgroud)

我已经阅读了C标准,对此并不是很清楚,我可以通过多种方式轻松解释这些措辞.

c pointers volatile c99

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

在C中通过一次操作交换两位?

假设我有一个包含六个未知值的字节:

???1?0??
Run Code Online (Sandbox Code Playgroud)

我想交换第2和第4位(改变任何?值):

???0?1??
Run Code Online (Sandbox Code Playgroud)

但是如何在C 中的一次操作中执行此操作

我在微控制器上每秒执行此操作数千次,因此性能是首要任务.

可以"切换"这些位.即使这与交换位不同,切换也可以用于我的目的.

c bit-manipulation arduino bit

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

关于round_up宏的问题

#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
Run Code Online (Sandbox Code Playgroud)

有了上面的宏,有人可以帮我理解"(s)-1"部分,为什么会这样?

以及像:

#define PAGE_ROUND_DOWN(x) (((ULONG_PTR)(x)) & (~(PAGE_SIZE-1)))
#define PAGE_ROUND_UP(x) ( (((ULONG_PTR)(x)) + PAGE_SIZE-1)  & (~(PAGE_SIZE-1)) ) 
Run Code Online (Sandbox Code Playgroud)

我知道"(〜(PAGE_SIZE-1)))"部分会将最后五位归零,但除此之外我无能为力,尤其是角色'&'运算符.

谢谢,

c macros

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

POSIX进程组

我目前正在将进程组实现到我的操作系统项目的POSIX子系统中.但是,我对POSIX规范(setsid)(以及维基百科的进程组页面)感到有些困惑.

我们的终端层将SIGINT发送到前台进程(组,其id应该等于组长的PID).在这种情况下,该前台进程(我们的"登录"应用程序)通过调用成为组长setsid.当用户登录时,程序会分叉并执行用户的shell.在这个阶段,我的理解是我setpgid在打电话之前给分叉的孩子打电话exec*.这意味着执行的程序从一开始就是过程组的一部分.

如果我想在进程组之外运行新分叉的子进程,我只能setsid在调用之前调用分叉的子进程exec*.

它是否正确?我应该检查或做的是否有任何非常模糊的东西?

作为一个后续问题,我相信我已经知道,是否需要fork转移团体会员资格?或者是setpgid每次fork通话后必须使用的东西?我收集的进程组是fork从POSIX定义转移的fork.

提前致谢.

c posix process

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

Mac OS X免费C编译器

是否有适用于OS X的小型免费C或C++编译器,如TCC?

Xcode不小,或像TCC,AFAIK一样简单.

我正在寻找类似GCC二进制文件或OS X TCC的东西.

c c++ compiler-construction macos

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

WinVerifyTrust检查特定签名?

我正在为Windows实现进程提升助手.这是一个将以提升模式运行并使用管理员权限启动其他程序而不显示其他UAC提示的程序.出于安全原因,我想确保只能执行使用我公司的Authenticode密钥进行数字签名的二进制文件.

的WinVerifyTrust函数获取我中途有,但它只是确保了二进制通过签署一些关键的就是信任的微软链的一部分.是否有一种相对简单的方法来执行Authenticode验证并确保它是由我们的私钥签名的?

c windows digital-signature winverifytrust

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

wchar_t vs wint_t

这是一个ANSI C问题.我有以下代码.

#include <stdio.h>
#include <locale.h>
#include <wchar.h>

  int main()
  {
    if (!setlocale(LC_CTYPE, "")) {
      printf( "Can't set the specified locale! "
              "Check LANG, LC_CTYPE, LC_ALL.\n");
      return -1;
    }
    wint_t c;
    while((c=getwc(stdin))!=WEOF)
      {
    printf("%lc",c);
      }
    return 0;
  }
Run Code Online (Sandbox Code Playgroud)

我需要完整的UTF-8支持,但即使在这个最简单的级别,我能以某种方式改进吗?为什么wint_t使用而不是wchar适当的更改?

c string

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