小编lda*_*v1s的帖子

如何将printf()包装到函数或宏中?

这听起来有点像面试问题,但实际上是一个实际问题.

我正在使用嵌入式平台,并且仅提供这​​些功能的等价物:

  • 的printf()
  • 的snprintf()

此外,printf()实现(和签名)很可能在不久的将来发生变化,因此对它的调用必须驻留在一个单独的模块中,以便以后易于迁移.

鉴于这些,我可以在一些函数或宏中包装日志记录调用吗?目标是我的源代码THAT_MACRO("Number of bunnies: %d", numBunnies);在一千个地方调用,但是只能在一个地方看到对上述函数的调用.

编译器:arm-gcc -std = c99

c logging c99 word-wrap

28
推荐指数
4
解决办法
6万
查看次数

div函数有用吗(stdlib.h)?

在C,C++(stdlib.h)中有一个名为div的函数

div_t div(int numer, int denom);

typedef struct _div_t
{
  int quot;
  int rem;
} div_t;
Run Code Online (Sandbox Code Playgroud)

但是C,C++有/和%运算符.

我的问题是:" 当有/和%运算符时,div函数有用吗?"

c c++ integer-division

16
推荐指数
4
解决办法
5041
查看次数

从configure.ac中的文件中读取版本号

由于某些原因,我在纯文本文件而不是configure.ac中定义项目版本号.我想创建一个语句来读取版本号并在编译期间存储它.

现在我的configure.ac看起来像这样:

AC_INIT([my program],[999.9.9])
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

AC_INIT([my program],[ $(cat VERSION) ])
Run Code Online (Sandbox Code Playgroud)

这当然不会奏效.这里的诀窍是什么?(我知道我失去了一些便携性 - 我现在不在乎).谢谢!

autoconf

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

客户端 - 服务器多人游戏(MMO)游戏中的运动"算法"?

我一直在写2D闪存多人游戏和套接字服务器.我对客户端和服务器之间的移动算法的原始计划如下:

  • 当这些改变时,客户端向服务器通知玩家的移动模式(向前移动或不移动)和玩家的转向模式(不转动,向左转或向右转).
    • 服务器每隔几毫秒循环所有玩家,并根据时间差计算转动的角度和移动的距离.客户端完成相同的计算.

我当前对客户端的计算(在服务器中使用相同的数学运算)==>

车削

var newTimeStamp:uint = UtilLib.getTimeStamp(); //set current timeStamp
                var rot:uint = Math.round((newTimeStamp - turningTimeStamp) / 1000 * 90); //speed = x degrees turning every 1 second
                turningTimeStamp = newTimeStamp; //update timeStamp
                if (turningMode == 1) //left
                {
                    movementAngle = fixAngle(movementAngle - rot);
                }
                else if (turningMode == 2) //right
                {
                    movementAngle = fixAngle(movementAngle + rot);
                }

private function fixAngle(angle:int):uint //fixes an angle in degrees (365 -> 5, -5 -> 355, etc.)
        {
            if (angle > 360) …
Run Code Online (Sandbox Code Playgroud)

sockets animation multiplayer

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

RAII,unique_ptr和out参数

我是一名试图学习C++ 11的C#开发人员.我正在尝试使用windns.h查询DNS.

我开始DnsQuery()并阅读,我需要释放结果记录输出参数DnsRecordListFree().C#方式可能是使用try-finally块来确保我释放资源,无论如何.

但是我了解到没有finally阻塞,并且windns.h真的应该与时俱进并实现符合RAII标准的接口(据我理解的典型建议).我试图创建一个RAII包装器类,而不是等待它发生,我试图使用析构函数调用DnsRecordListFree()并使用运算符重载转换来获取原始指针.

但我对如何正确使用此句柄或指针获取out参数感到困惑.在我研究的过程中,我学会了如何unique_ptr(我已经学过一些东西)可以与自定义删除器一起使用.

所以这是我迄今为止的简单代码.可能更多的错误不仅仅是这个,但我想我可以声明另一个PDNS_RECORD *presult并使用它作为out参数然后复制或移动或以其他方式将其值分配给a unique_ptr,但这听起来像是太多的工作/混乱.

在我看来,unique_ptr内部指针应该初始化为NULL,我应该能够以某种方式将指针的地址传递给out参数,这DNSQuery将更新原始值,当unique_ptr我的函数中的范围超出范围时,DnsRecordListFree()调用将自动制作.我不知道为了最小的正确/安全使用找出正确的组合.

#include <iostream>
#include <fstream>
#include <memory>
#include <Windows.h>
#include <WinDNS.h>

using namespace std;

auto pdnsDeleter = [&](PDNS_RECORD *ptr){ if (ptr) DnsRecordListFree(ptr); };

int main(int argc, char **argv)
{
    cout << "Hello World\n";

    std::unique_ptr<PDNS_RECORD*, decltype(pdnsDeleter)> results(0, pdnsDeleter);

    if (DnsQuery(L"google.com", DNS_TYPE_A, DNS_QUERY_STANDARD, NULL, ??results??, NULL))
    {
        cout << …
Run Code Online (Sandbox Code Playgroud)

c++ winapi out-parameters dynamic-memory-allocation

7
推荐指数
1
解决办法
1277
查看次数

链接错误:-Xlinker中的未知选项字符"X"

以下链接器命令导致以下错误.这是为XCode for iOS中的模拟器目标构建的.目前还不清楚甚至通过XCode提供Xlinker参数.关于我如何在这里寻求解决方案的任何想法?

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only i386 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ iPhoneSimulator7.1.sdk -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -o libxxx.a

错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:未知选项字符`X': - Xlinker

(注意:这个错误似乎无处不在.几天前相同的项目文件正在构建).

xcode ios libtool-xcode

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

如何在 osx 上使用调试符号从源代码编译 ruby​​?

我正在尝试使用调试符号从源代码编译 Ruby。我没有使用rbenvorrvm等。

我已经试过了

./configure optflags="-O0" debugflags="-g3 -ggdb"

无济于事:((调试器声称它没有符号)

谢谢!

ruby makefile compilation rbenv

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

PHP Sessions + Useragent with salt

在过去的几天里,它一直在我的脑海中运行,但我读了一些关于如何使PHP会话更安全的文章.几乎所有这些文章都说你需要在会​​话中使用额外的盐来保存useragent.像这样的东西:

$fingerprint = md5('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT']);
Run Code Online (Sandbox Code Playgroud)

盐会使攻击者更难以劫持或任何会话.但为什么每次检查时都加盐:

md5('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT']) == $_SESSION [ 'fingerprint' ]
Run Code Online (Sandbox Code Playgroud)

因此,为什么盐会使它更安全,因为攻击者仍然只需要使用者(相对来说是一小组不同的使用者)和sessionid?

可能是我忽略的小东西,但无法弄明白,让我疯狂哈哈

谢谢!

php user-agent salt session-hijacking

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

ibtool生成在xcode中无法读取的.strings文件

我正在使用ibtool本地化我的笔尖.我运行以下命令:

ibtool --generate-strings-file MainMenu.strings en.lproj/MainMenu.nib
Run Code Online (Sandbox Code Playgroud)

然后我将生成的.strings文件添加到xcode项目中,以便稍后引用和编辑它.

当我这样做时,如果我在xcode中选择.strings文件,它会显示一堆上行问号和垃圾.但是,如果我选择不添加文件并使用xcode手动打开它,它会完美地读取文件.

我只能猜测ibtool是以不可读的xcode格式编码文件.

如果我在xcode中打开文件.strings文件,将内容复制到剪贴板,关闭文件,将.strings文件添加到xcode,用剪贴板中的内容替换其垃圾内容,然后保存文件,就可以了.我也注意到这样做会将.strings文件的大小减半.

任何指导将不胜感激.

谢谢!

iphone ibtool

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

libtool 不提供要链接的库依赖项

我在 ubuntu lucid 上使用 libtool 2.2.6b,在 ubuntu precision 上使用 libtool 2.4.2。清醒时,我的项目将正确链接。准确地说,它无法链接。这是演示我的问题的示例代码;

配置文件

AC_INIT([ltp], [0.0.1], [someone])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([.m4])
AC_CONFIG_FILES([Makefile foo/Makefile bar/Makefile wah/Makefile])
AC_PROG_CXX
AC_PROG_LIBTOOL
AM_SANITY_CHECK
AC_LANG_CPLUSPLUS
AC_OUTPUT
Run Code Online (Sandbox Code Playgroud)

生成文件

SUBDIRS = foo bar wah
ACLOCAL_AMFLAGS = -I .m4
Run Code Online (Sandbox Code Playgroud)

foo/foo.h

#ifndef FOO_FOO_H_
#define FOO_FOO_H_
namespace Foo
{
  class Foo
  {
  public:
    Foo(long l);
  private:
    long l;
  };
}
#endif
Run Code Online (Sandbox Code Playgroud)

foo/foo.cpp

#include "foo/Foo.h"
namespace Foo
{
  Foo::Foo(long l) : l(l) {}
}
Run Code Online (Sandbox Code Playgroud)

foo/Makefile.am

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = Foo.cpp
libfoo_la_CPPFLAGS =
libfoo_la_LDFLAGS = …
Run Code Online (Sandbox Code Playgroud)

automake libtool

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