Tag: C#的

字符常量中的多个字符

一些C编译器允许一个字符常量中的多个字符。 这意味着写“是”而不是“是”很可能不被发现。 来源:C陷阱和陷阱 任何人都可以举一个例子,在一个字符常量中允许多个字符?

对multidimensional array的一维访问:定义明确的C?

我想我们都同意,通过以一维方式解引用其第一个元素(可能是偏移量)的指针来访问一个真正的multidimensional array被认为是惯用的C,例如: void clearBottomRightElement(int *array, int M, int N) { array[M*N-1] = 0; // Pretend the array is one-dimensional } int mtx[5][3]; … clearBottomRightElement(&mtx[0][0], 5, 3); 然而,在我的语言律师需要说服,这实际上是明确的C! 尤其是: 标准是否保证编译器不会在例如mtx[0][2]和mtx[1][0]之间填充内容? 通常,索引数组的末尾(除了末尾之外)是未定义的(C99,6.5.6 / 8)。 所以下面显然是不确定的: struct { int row[3]; // The object in question is an int[3] int other[10]; } foo; int *p = &foo.row[7]; // ERROR: […]

C ++:通过零错误捕获除法

这是一个简单的一段代码,其中除零发生。 我试图抓住它: #include <iostream> int main(int argc, char *argv[]) { int Dividend = 10; int Divisor = 0; try { std::cout << Dividend / Divisor; } catch(…) { std::cout << "Error."; } return 0; } 但无论如何,应用程序崩溃(即使我把选项-fexceptions MinGW )。 是否有可能捕捉到这样的exception(我知道这不是一个C ++exception,而是一个FPUexception)? 我知道我可以在分割之前检查除数,但是我做了这样的假设,因为除零(很less在我的应用程序中)是很less见的,所以尝试分割(并捕获错误if它发生)比每次除数之前testing除数。 我正在WindowsXP计算机上进行这些testing,但希望使其跨平台。

cudaMemcpy分段错误

我已经被这个错误困扰了很长一段时间,所以我决定把它发布在这里。 调用cudaMemcpy时发生此分段错误: CurrentGrid->cdata[i] = new float[size]; cudaMemcpy(CurrentGrid->cdata[i], Grid_dev->cdata[i], size*sizeof(float),\ cudaMemcpyDeviceToHost); CurrentGrid和Grid_dev分别指向主机和设备上的一个grid类对象,在这种情况下i = 0。 类成员cdata是一个浮点型指针数组。 对于debugging,就在这个cudaMemcpy调用之前,我打印出Grid_Dev->cdata[i] , CurrentGrid->cdata[i]和Grid_dev->cdata[i]的每个元素的值以及size一切看起来不错。 但它仍然以“分段错误(核心转储)”结束,这是唯一的错误信息。 cuda-memcheck只给了“进程没有终止成功”。 我目前无法使用cuda-gdb。 任何有关去哪里的build议? 更新 :现在好像我已经解决了这个问题,通过cudaMalloc设备上的另一个浮点指针A和cudaMemcpy将Grid_dev-> cdata [i]的值赋值给A,然后将cudaMemcpy A赋值给host。 所以上面写的代码片段变成: float * A; cudaMalloc((void**)&A, sizeof(float)); … … cudaMemcpy(&A, &(Grid_dev->cdata[i]), sizeof(float *), cudaMemcpyDeviceToHost); CurrentGrid->cdata[i] = new float[size]; cudaMemcpy(CurrentGrid->cdata[i], A, size*sizeof(float), cudaMemcpyDeviceToHost); 我这样做是因为valgrindpopup了“大小为8的无效读取”,我认为这是指Grid_dev->cdata[i] 。 我用gdb再次检查它,打印出Grid_dev->cdata[i]为NULL的值。 所以我想我不能直接取消引用设备指针,即使在这个cudaMemcpy调用。 但为什么 ? 根据该线程底部的注释,我们应该能够在cudaMemcpy函数中取消引用设备指针。 此外,我不知道如何cudaMalloc和cudaMemcpy的工作,但我认为由cudaMalloc一个指针,说这里,我们实际上分配这个指针指向设备上的某个地址的基本机制。 […]

如何创build用于QML的通用对象模型?

我想知道是否有任何macros或方式如何注册Qt模型作为QObject的属性。 例如,我有AnimalModel ( http://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel )。 我知道我可以将它传递给QuickView的根上下文 QuickView view; view.rootContext()->setContextProperty("myModel", &model); 如果我有通过Qmlmacros注册的QObject,我也可以通过这个对象来查看: view.rootContext()->setContextProperty("obj", pDataObject); 但是如果我想要拥有包含任何数据模型的QObject? 例如: class DataObject : public QObject { Q_OBJECT Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged) … AnimalModel m_modelAnimals; //Is this possible in any way? //Q_PROPERTY(AnimalModel modelAnimals READ modelAnimals NOTIFY modelAnimalsChanged) }; 我发现的每个例子都显示了如何将QAbstractListModel传递给根上下文。 […]

在Windows窗体之间传递值c#

我正在努力研究如何在表单之间传递值。 我有四种forms,我想将Login检索到的信息传递给第四种和最后一种forms。 这是我迄今为止。 在这个function中: private void btnLogin_Click(object sender, EventArgs e) 我已经反序列化了我想要的数据: NewDataSet resultingMessage = (NewDataSet)serializer.Deserialize(rdr); 然后,当我打电话给下一个表格时,我已经这样做了: Form myFrm = new frmVoiceOver(resultingMessage); myFrm.Show(); 然后,我的VoiceOver窗体如下所示: public frmVoiceOver(NewDataSet loginData) { InitializeComponent(); } private void btnVoiceOverNo_Click(object sender, EventArgs e) { this.Close(); Form myFrm = new frmClipInformation(); myFrm.Show(); } 当我debugging时,我可以看到数据在第二种forms在loginData中,但我似乎无法访问它在btnVoiceOverNo_Click事件。 我如何访问它,以便将它传递给下一个表单?

getline不要求input?

这可能是一个非常简单的问题,但请原谅我,因为我是新的。 这是我的代码: #include <iostream> #include <string> #include <sstream> using namespace std; int main () { string name; int i; string mystr; float price = 0; cout << "Hello World!" << endl; cout << "What is your name? "; cin >> name; cout << "Hello " << name << endl; cout << "How old are you? […]

在ndk {} DSL中定义LOCAL_SRC_FILES

我想知道是否有可能在gradle.build ndk {}块中定义LOCAL_SRC_FILES。 我目前使用: dependencies { classpath 'com.android.tools.build:gradle:1.3.0' } 在我的顶级gradle.build文件中。 我的jni模块gradle.build文件看起来像这样: apply plugin: 'com.android.library' dependencies { compile fileTree(dir: 'libs', include: '*.jar') } android { compileSdkVersion 11 buildToolsVersion "22.0.1" def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] […]

访问C#匿名types对象

我如何访问其声明范围之外的匿名types的对象? 例如 void FuncB() { var obj = FuncA(); Console.WriteLine(obj.Name); } ??? FuncA() { var a = (from e in DB.Entities where e.Id == 1 select new {Id = e.Id, Name = e.Name}).FirstOrDefault(); return a; }

根据inputdynamic二维数组

我需要从用户那里得到一个inputN并生成一个N * Nmatrix。 我怎样才能声明matrix? 一般来说,数组和matrix的大小应该在声明中是固定的,对吗? 那么vector<vector<int>>呢? 我从来没有使用过,所以我需要老兵的build议。