小编Poo*_*rna的帖子

优化整数和浮点乘法

我正在尝试优化以下操作,其中我有大量无符号短输入,需要按某个因子按比例缩小.有没有办法优化它不使用浮点运算

unsigned short val = 65523U;
val = val * 0.943;
Run Code Online (Sandbox Code Playgroud)

注意

我将在DSP上运行,浮点运算成本高昂

c c++ floating-point

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

GCC动态库构建问题

我是linux的新手,在使用动态库进行编译时,我收到了segmentationfault错误.

我有两个文件

ctest1.c

void ctest1(int *i)
{ 
   *i =10;
}
Run Code Online (Sandbox Code Playgroud)

ctest2.c

void ctest2(int *i)
{ 
   *i =20;
}
Run Code Online (Sandbox Code Playgroud)

我已使用以下命令将这两个文件编译到名为libtest.so的共享库中

  gcc -shared -W1,-soname,libtest.so.1 -o libtest.so.1.0.1 ctest1.o ctest2.o -lc
Run Code Online (Sandbox Code Playgroud)

我已经编写了另一个程序prog.c,它使用了这个库导出的函数

prog.c中

#include <stdio.h>

void (*ctest1)(int*);
void (ctest2)(int*);


int main()
{
  int a;

  ctest1(&a);

  printf("%d",a);

  return 0;

}
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令构建可执行文件时

gcc -Wall prog.c -L.-o prog

但是当我运行生成的可执行文件时,我得到了SegmentationFault错误.

当我用ldd检查prog的标题时,它显示出来

linux-vdso.so.1 =>(0x00007f99dff000)libc.so.6 => /lib64/libc.so.6(0x0007feeaa8c1000)/lib64/ld-linux-x86-64.so.2(0x00007feeaac1c000)

有人可以说出问题所在

gcc dynamic-linking

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

指针中的哪个位置地址指的是

指针中的地址是指什么,主存储器或虚拟地址中的实际地址位置.可以配置吗?

如果它指的是虚拟地址,那么每次访问时,内存管理器都需要将该地址转换为实际地址

c c++ pointers memory-management

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

包含路径中具有相同名称的两个标头

在我的make文件中的CINCLUDE路径中,有两个具有相同名称的标头.

我无法删除其中一个.如何指示makefile优先处理特定文件夹中的头文件.

makefile

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

C++编译错误非类类型

在下面我得到错误错误:请求'*it'中的成员'get_id',这是非类型'const Param*const'.下面的代码有什么问题

bool SomeParams::is_default(int _id) const
{
        vector<const Param*> param_list;
        bool is_default = false;

        if( get_default_params(param_list) ) // This populates param_list
        {
                vector<const Param*>::const_iterator it = param_list.begin();

                for(;it!=param_list.end();++it)
                {
                        if( *it->get_id() == _id ) // get_id is function in Param object
                        {
                                is_default = true;
                                break;
                        }
                }
        }

        return is_default;
}
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors

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

Bash如果字符串检查

我正在评估以下表达式.即使CMD是START或STARTED,它总是评估为真.难道我做错了什么?

if [ "$CMD"="START" ]; then
    echo fi
fi
Run Code Online (Sandbox Code Playgroud)

bash

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

为什么编译器不能解析对模板函数的调用?

在下面的程序中,为什么编译器会为调用printMax模板函数而不是调用函数生成错误printMaxInts

#include <iostream>

template<class A>
void printMax(A a,A b)
{
   A c = a>b?a:b;

   std::cout<<c;
}

void printMaxInts(int a ,int b)
{
   int c = a>b?a:b;

   std::cout<<c;

}

int main()
{
   printMax(1,14.45);

   printMaxInts(1,24);
}
Run Code Online (Sandbox Code Playgroud)

c++ templates overload-resolution

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

字符串常量前的非限定id

在编译下面的代码时,我得到错误"在字符串常量之前预期的unqualified-id"

In file "Notification_Constants.h"

namespace NOTIFICATION_CONSTANTS
{
    #define SERVICE_EMAIL "service@company.com"
}
Run Code Online (Sandbox Code Playgroud)

在文件SendEmail.cpp中

#include "Notification_Constants.h"

void UserPreferences::get_senders_email(String &_email)
{
    _email = NOTIFICATION_CONSTANTS::SERVICE_EMAIL;
}
Run Code Online (Sandbox Code Playgroud)

如果我分配如下,它正常工作,编译错误的原因是什么.

_email = SERVICE_EMAIL;
Run Code Online (Sandbox Code Playgroud)

有一个类似的问题,但没有提到原因.

具有相关方法的字符串类声明

class String
{
public:

String();
String(const String& src);
String(const char *new_str);
String& operator=(const String& src);
String& operator=(const char *new_str);
};
Run Code Online (Sandbox Code Playgroud)

c++ string c-preprocessor

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

用于线程和进程同步的信号量和互斥量

我对线程和进程级别的信号量和互斥量的使用感到困惑.我们可以使用semphores和互斥量进行线程和进程同步,还是在线程和进程级别都有不同的信号量和互斥量?我的问题是参考POSIX API.

multithreading posix mutex semaphore

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

SpinLock read_lock_irqsave 标志属性

这是关于void spin_lock_irqsave(spinlock_t *lock, unsigned long flags);函数调用。之前提到的中断状态存储在标志中,我们可以通过将其传递给spin_unlock_irqrestore函数来恢复它们。

但是我不知道值传递的标志如何在spin_lock_irqsave调用时捕获先前的中断状态。

synchronization device-driver linux-kernel

0
推荐指数
1
解决办法
527
查看次数

Python日期时间问题

我试图计算下面提到的两个不同时间戳之间的差异.我得到的值为25324秒,小于实际差值.这是什么问题?

from datetime import datetime

time_format = "%Y-%m-%d %H:%M:%S"

d1 = datetime.strptime('2013-12-12 03:59:33', time_format)
d2 = datetime.strptime('2013-12-09 20:57:29', time_format)
print (d1 - d2).seconds

25324
Run Code Online (Sandbox Code Playgroud)

python datetime

0
推荐指数
1
解决办法
47
查看次数