Tag: C#的

让Clang在Windows上工作

我遵循了下面的一步一步的指导 ,我已经pipe理了一些小窍门,让clang编译使用code:blocks和MinGW。 太棒了,所以现在我可以添加Clang模块到eclipse(为什么有一个IDE,当你可以有四个),并开始编译。 我可以编译一个不使用标准库的简单程序,但不幸的是,当我尝试编译这个程序时: #include <iostream> using namespace std; int main() { cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! return 0; } 首先我得到这个: .. \ src \ test.cpp:9:10:致命错误:找不到'iostream'文件 所以我将Mingw标题添加到包含path中; 那么我得到这个: '致命的错误:'位/ c + + config.h'文件未find' 这很奇怪。 为什么明文工作,如果该文件不是“位/”? 它是内置于编译器? 没关系,我find了一个实现它,并创build'bits /'的文件。 然后,我得到了一个包括奇怪的错误,似乎表明要么铛没有正确实施预处理器,否则我对预处理器的理解不正确的错误风暴。 C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.4.1\include\c++/cwchar:45:26: error: expected value in expression #if _GLIBCXX_HAVE_WCHAR_H 还有更多这样的。 应该是的 […]

debugging模板实例

在使用C ++模板进行元编程时,是否有一种方法可以像debugging器一样使用,以便逐步实现模板的实例化和编译? 现在看来,在创build一个复杂的模板networking时,除了查看编译器错误消息以查看如何实例化模板(如果有任何编译器错误)之外,确实没有很好的debugging方法,并尝试从错误信息后退工作,如果意想不到的事情正在产生。 我不确定是否存在我正在寻找的东西,因为它必须是在编译时完成的东西,但基本上它会是一个方法,就像是逐步执行代码并检查堆栈框架gdb在运行时,在那里编译器可以停止,环境检查模板或嵌套模板集实例化的序列。 例如,我们假设我创build了一些简单的代码,如下所示: template<typename T, typename R = void> struct int_return_type {}; template<typename R> struct int_return_type<int, R> { typedef R type; }; template<typename T, typename R = void> struct float_return_type {}; template<typename R> struct float_return_type<float, R> { typedef R type; }; template<typename T> typename int_return_type<T>::type test() { cout << "T type is int" […]

使用GCC语句expression式的匿名函数

这个问题并不十分具体, 这真的是为了我自己的C丰富,我希望别人也可以发现它有用。 免责声明:我知道很多人都会有这样的冲动:“如果你想做FP,那么就用一种function性语言”。 我在embedded式环境中工作,需要链接到许多其他C库,并没有太多的空间可用于更多的大型共享库,并且不支持许多语言运行时。 而且,dynamic内存分配是不可能的。 我也很好奇。 我们中的许多人都看过这个漂亮的Cmacros,用于lambdaexpression式: #define lambda(return_type, function_body) \ ({ \ return_type __fn__ function_body \ __fn__; \ }) 一个例子是: int (*max)(int, int) = lambda (int, (int x, int y) { return x > y ? x : y; }); max(4, 5); // Example 使用gcc -std=c89 -E test.c ,lambda扩展为: int (*max)(int, int) = ({ […]

前向声明与unique_ptr?

我发现使用类的前向声明与std::unique_ptr结合使用是很有用的,如下面的代码所示。 它编译和GCC工作,但整个事情似乎有点奇怪,我不知道这是标准的行为(即标准所要求的)? 因为当我声明unique_ptr时B不是一个完整的types。 A.hpp #include <memory> class B; class A { std::unique_ptr<B> myptr; // B::~B() can't be seen from here public: ~A(); }; A.cpp #include "B.hpp" //B.hpp has to be included, otherwise it doesn't work. A::~A() = default; // without this line, it won't compile // however, any destructor definiton will do. 我怀疑这与析构函数有关(因此需要调用unique_ptr<B>的析构函数)是在特定的编译单元(A.cpp)中定义的。

C ++是否通过值或引用传递对象?

一个简单的问题,我在这里找不到答案。 我所理解的是,在调用过程中将一个parameter passing给一个函数,例如 void myFunction(type myVariable) { } void main() { myFunction(myVariable); } 对于像int , float等简单的数据types,函数是通过值调用的。 但是,如果myVariable是一个数组,只有起始地址被传递(尽pipe我们的函数是通过值函数调用的)。 如果myVariable是一个对象,也只传递该对象的地址,而不是创build一个副本并传递它。 所以回到这个问题。 C ++是否通过引用或值传递一个对象?

.NET / Windows Forms项目有没有替代Maven的?

什么是用来代替Maven的C#Windows窗体项目? 我们有世界各地的开发人员,并试图提出一些干净简单,快速的依赖pipe理系统。

Windows Phone 7和本地C ++ / CLI

微软最近发布了新的Phone 7平台的工具和文档,让那些拥有C ++代码库的人(像我一样)不再支持本地开发。 虽然我发现这个决定被推翻了,但我对此表示怀疑。 所以我在想,如何让这个代码库可以通过C ++ / CLI编译来实现Phone 7的可行性。 当然,用户界面部分无法移植,但我不清楚其余部分。 任何人都有类似的经历? 我不是在讨论那些低层次的代码 – 但是模板和智能指针的使用相当频繁。

C#:如何使IEnumerable <T>线程安全?

说我有这个简单的方法: public IEnumerable<uint> GetNumbers() { uint n = 0; while(n < 100) yield return n++; } 你将如何使这个线程安全? 由此我的意思是你会得到一次枚举,并有多个线程处理所有的数字,没有任何人得到重复。 我认为一个锁需要用在某个地方,但是这个锁必须在哪里才能使迭代器块成为线程安全的呢? 什么,一般来说,你需要记住,如果你想要一个线程安全的IEnumerable<T> ? 或者,而是我想这将是一个线程安全的IEnumerator<T> …?

C#自定义getter / setter没有私有variables

我最近学习了c#,所以当我学会编写属性的时候,我被教导要这样做: public string Name { get; set; } 汽车性能是伟大的! 但是现在我试图做一些更复杂的事情,所以我需要编写一个自定义的访问器对。 private string _Name; public string Name { get { return _Name; } set { _Name = value } } 我知道编译器在使用汽车的时候使得一个私有的实例variables在黑暗的深处变暗,但是我被宠坏了,并且不希望这个私有variables看起来毫无意义。 有没有办法使用自定义访问没有私有variables?

C ++中未评估的上下文是什么?

经常想到的一个例子是: sizeofexpression式,它不计算expression式,但是通过静态types来确定大小。 例如 : int func(); sizeof(func()); 这是我思考的极限,所以如果还有其他未被评估的情境,那么它们是什么?