我刚刚编译了GCC 4.6.0,我想尝试新功能,从基于范围的for循环开始.
我想改变的第一个循环是迭代std ::指针向量.我更改了代码以使用新语法,但它没有编译.
我试图用另一个替换for循环,它是在一个std :: vector of structs上,它编译并运行完美.
这是一个简短的测试代码,向您展示我的问题:
#include <vector>
#include <iostream>
int main()
{
std::vector< int > values;
values.push_back(2);
values.push_back(5);
values.push_back(8);
values.push_back(13);
values.push_back(17);
for (int &n : values)
{
std::cout << n << "\n";
}
std::vector< int* > pointers;
pointers.push_back(new int(2));
pointers.push_back(new int(5));
pointers.push_back(new int(8));
pointers.push_back(new int(13));
pointers.push_back(new int(17));
for ((int*) &p : values)
{
std::cout << (*p) << "\n";
}
for( unsigned int i = 0; i < pointers.size(); ++i)
{
delete pointers[i];
}
return 0; …Run Code Online (Sandbox Code Playgroud) 我的代码中有一行看起来像这样:
#ifndef MACRO(n)
Run Code Online (Sandbox Code Playgroud)
这实际上适用于大多数编译器.但是,这在Solaris上失败,因为官方语法是# ifndef identifier new-line groupopt标识符中不允许使用括号.
检查此宏是否已定义的正确方法是什么?
我试图从这样的DLL导出一个类及其基类:
#ifdef MY_EXPORTS
#define DECLSPEC_TEST __declspec(dllexport)
#else
#define DECLSPEC_TEST __declspec(dllimport)
#endif
class DECLSPEC_TEST BaseClass
{
// stuff.
};
class DECLSPEC_TEST DerivedClass : public BaseClass
{
// This class only has a constructor which initializes the class differently.
};
Run Code Online (Sandbox Code Playgroud)
但我尝试在另一个DLL中使用此类,我不断收到错误:
error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall DerivedClass::DerivedClass(void)"
(__imp_??0DerivedClass@@QAE@XZ) referenced in function
"public: __thiscall SomeOtherClass::SomeOtherClass(void)" (??0SomeOtherClass@@QAE@XZ)
Run Code Online (Sandbox Code Playgroud)
我还用PE Explorer查看了我的导出DLL,我在导出列表中看不到派生类.
当我尝试在我的其他DLL中使用基类时,它工作正常.
我究竟做错了什么?
#include <iostream>
using namespace std;
int main() {
// your code goes here
int a = 10;
printf("\n a = %d", a),int(3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码在C++(http://ideone.com/RSWrxf)中运行良好,但同一printf行在C中不起作用.为什么它可以工作C++?我对两个语句和C/C++编译差异之间允许的逗号感到困惑.
我想将2个音频文件混合在一起 - 一个文件长度为2分钟,另一个文件长度为10秒.我希望两个文件混合,这样两种声音仍然可以听到.我希望这个10秒的剪辑准确地在30秒内进入10秒,所以它将以40秒结束.
我知道如何使用ffmpeg将2个音频文件混合在一起
ffmpeg -i input.mp3 -i input2.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何在特定时间开始这10秒钟的声音.
我有一种情况,我必须确保我只有一个对象.我正在考虑实现单身如下:
class One_Of_a_Kind:
def __init__(self):
self.do_some_setup()
class One_Creator:
Only_One = None
def __new__(cls, *args, **kwargs):
if One_Creator.Only_One:
return One_Creator.Only_One
else:
One_Creator.Only_One = One_of_a_Kind()
return One_Creator.Only_One
Run Code Online (Sandbox Code Playgroud)
由于我正在阅读很多关于单身人士(利弊)的内容,所以我对实施这段代码犹豫不决.我想知道在需要(或强制)只有一个特定类别的对象的情况下使用它是否合适和/或被认为是好的做法.
是否有更好的方法来实现同样的事情?
一旦质量门在SonarQube中失败,我就需要为项目触发HipChat通知.是否有REST API用于检查项目的质量门状态.我找不到它下api/quailty_gate或api/projects.
我也对其他触发hipChat通知的方法持开放态度.
我的理解是该功能std::isnan仅从C++ 11开始提供.此外,除非特别说明,否则g++使用-std=gnu++98.
那为什么这会编译?
>> cat test.cpp
#include <cmath>
int main(int argc, char** argv)
{
return std::isnan(0);
}
>> g++ test.cpp
Run Code Online (Sandbox Code Playgroud)
是否有一个标志来取出该功能<cmath>?