假设我希望在我希望C程序链接到的库的实现中使用C++ STL容器...
我的示例标题是
/* mynums.h */
#ifndef MY_NUMS
#define MY_NUMS
#ifdef __cplusplus
extern "C" {
#endif
void append_num(int num);
void print_nums();
#ifdef __cplusplus
}
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
我的示例实现文件是
/* mynums.cpp */
#include "mynums.h"
#include <vector>
using std::vector;
vector<int> nums;
void append_num(int num)
{
nums.push_back(num);
}
void print_nums()
{
for (int i = 0; i < nums.size(); i++)
{
printf("%d, ", nums[i]);
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
我的申请看起来像
/* app.c */
#include "mynums.h"
int main()
{
append_num(1);
append_num(2);
append_num(3);
print_nums();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我编译这些的命令是 …
我有一个带I/O引脚的主板,我编写了一个C库,其中包含设置和查询这些I/O引脚状态的功能.假设其中一个函数的名称是get_pin(int pin_no),它返回该引脚的逻辑电压.我想向我的一个引脚发送1脉冲/秒(PPS)信号,并告诉Linux的NTPD根据该信号进行校准.
是否有可能告诉NTPD使用其中一个I/O引脚作为其PPS?如果是这样,这样做的方法是什么?IE浏览器.是通过配置文件还是需要修改NTPD的源代码?我早期的研究似乎表明后者可能是必要的.
编辑:我正在使用Centos上的ntpd
If the operation sets an internal state flag that was registered with
member exceptions, the function throws an exception of member type failure.
Run Code Online (Sandbox Code Playgroud)这向我表明 cout 可以抛出异常。这是真的?什么样的场景会迫使这个?
我有一个简单的脚本
#!/usr/bin/bash
# exit5.bash
exit 5
Run Code Online (Sandbox Code Playgroud)
我用交流程序中的系统来称呼它
#include <stdlib.h>
#include <stdio.h>
int main()
{
int ret = system("./exit5.bash");
printf("%d\n", ret);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我看到1280打印到屏幕上,这与 5 << 8
为什么我看不到常规5?
Python 支持“动态”创建属性,就像这样。
class MyClass:
def __init__(self):
pass
x = MyClass
x.new = 5
print(x.new) # prints 5
Run Code Online (Sandbox Code Playgroud)
但这有点难看。我必须在类中有一些指令,函数或类属性定义。
但主要的障碍是...
x.first.second = 1 # this will raise
Run Code Online (Sandbox Code Playgroud)
它提高是因为 first 显然不存在。我将不得不做这样的事情。
x.first = MyClass()
x.first.second = 1
print(x.first.second)
Run Code Online (Sandbox Code Playgroud)
我想根据需要递归创建属性。这可能吗?
让我们检查以下perl代码
if ($a lt 0.00 or $a gt 100.000)
{
print "a must be between 0 and 100 \n";
exit 1
}
exit 0
Run Code Online (Sandbox Code Playgroud)
让我们说a等于5.上面的代码将以失败状态退出,因为a不在0到100之间.
只需简单地更换lt,并gt与他们所代表的实际经营者<,并>分别产生预期的结果.用以9开头的数字替换100也将产生预期结果.
为什么Perl的比较运算符告诉我5不在0到100之间?
我发现使用std :: bind时,引用传递往往不起作用.这是一个例子.
int test;
void inc(int &i)
{
i++;
}
int main() {
test = 0;
auto i = bind(inc, test);
i();
cout<<test<<endl; // Outputs 0, should be 1
inc(test);
cout<<test<<endl; // Outputs 1
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当通过使用std bind创建的函数调用时,为什么变量不会递增?
为什么子类B与基类A不同?
我知道B是A但A不是B,但如果is_same在这些情况下没有返回true,那么我觉得它的使用是有限的.
在这种情况下,是否存在可以返回true的std函数?
我已经看到了其他答案,但由于某种原因,它们并不适合我.
我试图使用以下代码在Perl脚本中获取昨天的日期.
供将来参考,今天的日期是2015年11月12日
my (undef, undef, undef, $mday,$mon,$year) = localtime();
my $prev_day = timelocal(0, 0, 0, $mday-1, $mon, $year);
(undef, undef, undef, $mday,$mon,$year) = localtime($prev_day);
$year += 1900;
print "Yesterday's Day: $mday, Month: $mon, Year: $year\n";
Run Code Online (Sandbox Code Playgroud)
除了我的输出看起来像这样
Yesterday's Day: 11, Month: 10, Year: 2015.
Run Code Online (Sandbox Code Playgroud)
我应该读昨天的日期Day: 11, Month: 11, Year: 2015.为什么减去月份?
编辑:这与建议的答案不同,因为我想知道为什么当地时间似乎写错了月份.
我正在开发一个Android应用程序,我需要将数据写入文本文件,以便稍后在其他活动中阅读.这是我的代码正文.
//writes the string "hello android" to file
FileOutputStream outFile = openFileOutput("myfile.txt", MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(outFile);
String hello = "hello android.";
osw.write(hello);
osw.flush();
osw.close();
Run Code Online (Sandbox Code Playgroud)
当我第一次写这段代码时,我收到了一个警告,所以我添加了这一行
@SuppressWarnings("deprecation")
Run Code Online (Sandbox Code Playgroud)
到我的功能的顶部.但是,我的IDE中仍然会删除MODE_WORLD_READABLE.为什么?注意:该函数具有try-catch语句,它们应该是,并且"在函数顶部抛出IOException.
我在我的情节中设置了这样的范围
set yrange[ 0.000 : 0.040 ]
Run Code Online (Sandbox Code Playgroud)
并且图形在 y 轴上的间隔为 0.005。y 轴读作
0.04
0.035
0.03
0.025
0.02
0.015
0.01
0.005
0
Run Code Online (Sandbox Code Playgroud)
在图表的一侧。这看起来完全不一致。
我怎样才能让它显示每个 tic 的千分之一的精度?
我已经决定我已经厌倦了决定哪些类负责删除哪些位图.我试图重写我的代码以使用自定义删除器的智能指针al_destroy_bitmap
我的代码非常简单.
shared_ptr<ALLEGRO_BITMAP> test = make_shared<ALLEGRO_BITMAP>(al_load_bitmap("hello.png"), al_destroy_bitmap);
Run Code Online (Sandbox Code Playgroud)
我遇到了一些我似乎无法解决的错误.
error C2079: 'std::_Get_align<ALLEGRO_BITMAP>::Elt2' uses undefined struct 'ALLEGRO_BITMAP'
error C2079: 'std::_Get_align<ALLEGRO_BITMAP>::Elt0' uses undefined struct 'ALLEGRO_BITMAP'
error C2027: use of undefined type 'ALLEGRO_BITMAP'
error C2027: use of undefined type 'ALLEGRO_BITMAP'
Run Code Online (Sandbox Code Playgroud)
解决我的问题的其他解决方案是创建一个Bitmap类来包装所有Allegro的东西,但这看起来很难看,我认为我不应该这样做.另外,我已经到处使用其他的allegro函数,然后我想为ALLEGRO_SAMPLE和编写相同类型的类ALLEGRO_FONT.我真的不喜欢这样做.
如何在Allegro位图中使用智能指针?
编辑:也许为非Allegro编码员提供ALLEGRO_BITMAP如何工作的感觉,我将在下面发布一些代码
ALLEGRO_BITMAP *test = al_load_bitmap("hello.png") // This works
ALLEGRO_BITMAP test1; // This fails with error C2079 undefined struct ALLEGRO_BITMAP. I expect this here.
Run Code Online (Sandbox Code Playgroud)