这听起来有点像面试问题,但实际上是一个实际问题.
我正在使用嵌入式平台,并且仅提供这些功能的等价物:
此外,printf()实现(和签名)很可能在不久的将来发生变化,因此对它的调用必须驻留在一个单独的模块中,以便以后易于迁移.
鉴于这些,我可以在一些函数或宏中包装日志记录调用吗?目标是我的源代码THAT_MACRO("Number of bunnies: %d", numBunnies);在一千个地方调用,但是只能在一个地方看到对上述函数的调用.
编译器:arm-gcc -std = c99
在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函数有用吗?"
由于某些原因,我在纯文本文件而不是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)
这当然不会奏效.这里的诀窍是什么?(我知道我失去了一些便携性 - 我现在不在乎).谢谢!
我一直在写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) 我是一名试图学习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) 以下链接器命令导致以下错误.这是为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
(注意:这个错误似乎无处不在.几天前相同的项目文件正在构建).
我正在尝试使用调试符号从源代码编译 Ruby。我没有使用rbenvorrvm等。
我已经试过了
./configure optflags="-O0" debugflags="-g3 -ggdb"
无济于事:((调试器声称它没有符号)
谢谢!
在过去的几天里,它一直在我的脑海中运行,但我读了一些关于如何使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?
可能是我忽略的小东西,但无法弄明白,让我疯狂哈哈
谢谢!
我正在使用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文件的大小减半.
任何指导将不胜感激.
谢谢!
我在 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)