我们的C++代码中有一个现有的函数实现:
void Function(int param)
{
printf("In Function\n");
}
int main()
{
Function(10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望将其更改为调用另一个函数(通过宏声明的帮助),它将接受其他参数,如 FILE和LINE(用于调试目的),然后调用实际函数:
#define Function(param) Function_debug(param, __FILE__, __FUNCTION__, __LINE__) \
{\
printf("In Function_debug [%s] [%s] [%d]\n", file, func, line); \
Function(param);\
}
Run Code Online (Sandbox Code Playgroud)
但是下面的代码:
#include <stdio.h>
#define Function(param) Function_debug(param, __FILE__, __FUNCTION__, __LINE__) \
{\
printf("In Function_debug [%s] [%s] [%d]\n", file, func, line); \
Function(param);\
}
void Function(int param)
{
printf("In Function\n");
}
int main()
{
Function(10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
翻译为:
void Function_debug(int param, "temp.cpp", …Run Code Online (Sandbox Code Playgroud) 我试图按照下面的图像准确打印连续信号:

以下是我的代码:
x=[0 0 0 1 1 1 1 1 1 -1 -1 0 0];
n=[6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 ];
subplot(2,2,2);
axis([min(n)-10,max(n)+10,min(x)-10,max(x)+10]);
plot(n,x);
grid on;
xlabel('Time');
ylabel('x2(t)');
title('Continous Signal');
Run Code Online (Sandbox Code Playgroud)
但是输出的情节数字并不符合预期:

在MATLAB中我们不能正确显示连续信号吗?如果是,我需要在我的代码中做出哪些更改.
为什么信号值不通过直线连接 - 它会产生曲线(或倾斜的直线)?
对于我的一个项目,我需要通过 Internet 云从 Arduino(使用 GSM 调制解调器)向 PHP Web 服务器发送 POST 请求。我需要将用户 ID 卡详细信息传输到网络服务器进行身份验证。
我尝试使用 RC4 安全算法,发现 Ardunio 和 PHP 都支持 - 所以我使用一些虚拟值的加密和解密进行得很好。
不过我有一个顾虑。假设我的秘密消息是 - '秘密'。RC4 加密后,加密字符串包含不可读的字符 - 所以问题是解密我不知道加密字符串的长度。
如果输入纯文本的长度为 6 ( 'Secret' ),则输出加密字符串也将始终为 6?
有了这个假设,我的加密/解密在 Arduino(C/C++ 堆栈)和 Web 服务器(PHP)中运行良好?
我有一个构造函数接受initializer_list作为参数:
A::A(std::initializer_list<uint32_t> arg)
: vec(arg)
{
}
Run Code Online (Sandbox Code Playgroud)
问题是它允许初始化器列表为零或空值为arg:
A {}
Run Code Online (Sandbox Code Playgroud)
如何强制使用非零的initializer_list?
我有以下代码:
#include "boost/circular_buffer.hpp"
int main()
{
// Create a circular buffer with a capacity for 3 integers.
boost::circular_buffer<int> cb(3);
// Insert threee elements into the buffer.
cb.push_back(1);
int a = cb[0]; // a == 1
}
Run Code Online (Sandbox Code Playgroud)
根据文档,push_back API的意思是“在 circle_buffer 的末尾插入一个新元素” -那么cb [0]如何为1?cb [2]不应存储值1吗?
======================================更新=========== ===================
// Insert threee elements into the buffer.
cb.push_front(11);
cb.push_back(2);
cb.push_back(3);
int a = cb[0]; // a == 11
int b = cb[1]; // b == 2
int c = cb[2]; // c == 3 …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu上有一个地址txt文件.像下面的东西 -
Name
Address1
Address2
Address3
Name2
Address12
Address22
Address32
Run Code Online (Sandbox Code Playgroud)
如何将内容合并为 -
Name Address1 Address2 Address3
Name2 Address12 Address22 Address32
Run Code Online (Sandbox Code Playgroud)
实际上,地址一个接一个地写入文件 - 如上所述.新地址由新行或空行分隔.现在我想将每个地址行合并为一行 - 所以重复所有地址
我需要调试流程,因此使用 cmake / mingw64 C++ 编译器编译其代码。我知道,如果我们对每个源代码文件使用 -fprofile-arcs -ftest-coverage 进行编译 - 我将获得调试流程执行详细信息,从而帮助我理解和修复流程。因此,我在 CMakelists.txt 中添加了以下 CMAKE 选项,但随后出现了错误:
SET(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")
SET(GCC_COVERAGE_LINK_FLAGS "-fprofile-arcs -fprofile-generate -lgcov --coverage")
add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}" )
SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}" )
Run Code Online (Sandbox Code Playgroud)
构建链接期间出错:
[76/150] Linking CXX executable test.exe
FAILED: test.exe
cmd.exe /C "cd . && C:\tools\mingw64\bin\c++.exe -DGSL_THROW_ON_CONTRACT_VIOLATION -Wall -ftrack-macro-expansion=0 -Werror -std=gnu++14 -D _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -Og -g3 test.cpp.obj testhelp.cpp.obj -o test.exe -Wl,--out-implib,test.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ext/googletest/build/googlemock/libgmock_main.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
test/case/TestArgs.cpp.obj: In function …Run Code Online (Sandbox Code Playgroud) 我正在尝试将键和值数据添加到我的类地图成员变量中 - 但它没有添加相同的 - 我尝试过的map - insert,[]和emplace方法,但它们不是在我的循环代码中添加数据来映射 - 只有我在课程构建期间插入的值是可用的 - 我需要做的是解决问题 - 我期待show方法也会打印7,8,9,9 -
#include <iostream>
#include <map>
#include <vector>
class A {
public:
A(std::initializer_list <uint32_t> d): data(d) {}
std::vector <uint32_t> data;
bool operator < (const A & rhs) const {
size_t rhsSize = rhs.data.size();
for (size_t i = 0; i < data.size(); i++) {
if (i < rhsSize)
return false;
return true;
}
}
};
class B {
public:
B(const std::map <A, uint32_t> & t): table(t) {}
void Show() …Run Code Online (Sandbox Code Playgroud) 我有一个非常小的代码,我试图将 16 位数字从小端格式转换为大端格式。
number 的值是 0x8000,转换后我希望它是 0x0080 - 但我得到了一些不同的值,如下所述:
#include <iostream>
int main()
{
int num = 0x8000;
int swap = (num>>8) | (num<<8);
std::cout << swap << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序输出 8388736 作为值,十六进制为 0x800080 - 我不确定我做错了什么?
//header file
void SetLogger(const std::shared_ptr<A>& log);
//cpp file
void SetLogger(const std::shared_ptr<A>& log)
{
std::shared_ptr<A>& mLog;
mLog = log;
}
Run Code Online (Sandbox Code Playgroud)
将shared_ptr作为函数参数传递的最佳方法是什么,以便所引用的对象的所有者船不会更改/不引用引用计数增加并且没有主体应该能够删除它接受所有者?
那么如何在函数中创建一个本地shared_ptr来说明上面的限制呢?
Caller:
SetLogger(A.get()); // A is actually a shared pointer
Header:
void SetLogger(const A& log);
CPP File:
void SetLogger(const A& log)
{
auto mLog = std::make_shared<A>(log);
}
Run Code Online (Sandbox Code Playgroud)