小编man*_*ans的帖子

强制将c ++的一部分编译为C语言

我想在c ++源代码中定义一个应该是POD的结构(所以它应该基于C标准而不是C++编译)

例如,假设我在c ++文件中有以下代码:

struct myStruct
{
   int x;
   int y;
}
class MyClass
{
    int x;
    int y;
}
Run Code Online (Sandbox Code Playgroud)

如果我编译此代码,struct是POD,应该编译为POD.因此,成员变量的位置遵循C标准,该标准已明确定义.

但假设用户可能会错误地将代码更改为此代码:

struct myStruct
{

   int x;
   int y;
private:
   int z;
}
class MyClass
{
    int x;
    int y;
}
Run Code Online (Sandbox Code Playgroud)

现在结构不是POD,编译器可以自由地将成员变量放在内存中.

如何强制编译器确保始终根据C标准编译结构?

请注意,我不能将代码放在*.c代码中,因为我正在开发一个可以包含在*.cpp源代码中的头代码.

c c++ struct

5
推荐指数
1
解决办法
179
查看次数

在 Visual Studio Code 和 vsc 的 cmake 工具中设置工具链文件不起作用

我在 Ubuntu 20.04 上使用 Visual Studio Code,并在 Visual Studio Code 上使用 cmake 工具。

我正在尝试在项目中使用opencv。我使用 vcpkg 构建 OpenCV 并安装它:

cmakeList.txt如下:

cmake_minimum_required(VERSION 3.0.0)
set(CMAKE_TOOLCHAIN_FILE /home/m/vcpkg/scripts/buildsystems/vcpkg.cmake)
project(testcmake VERSION 0.1.0)

include(CTest)
enable_testing()
find_package(OpenCV REQUIRED)

add_executable(testcmake main.cpp)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
Run Code Online (Sandbox Code Playgroud)

我还将这一行添加到setting.json:

{
    "cmake.configureOnOpen": false,
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",

    "cmake.configureSettings": {
      "CMAKE_TOOLCHAIN_FILE": "/home/m/vcpkg/scripts/buildsystems/vcpkg.cmake"
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是当我运行 cmake 时,我收到此错误:

[main] Building folder: cmakeTest 
[main] Configuring folder: cmakeTest 
[proc] Executing command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_TOOLCHAIN_FILE:STRING=/home/m/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/bin/gcc-9 -DCMAKE_CXX_COMPILER:FILEPATH=/bin/g++-9 -H/home/m/MyData/sourceCode/cmakeTest -B/home/m/MyData/sourceCode/cmakeTest/build -G "Unix Makefiles"
[cmake] Not searching for unused …
Run Code Online (Sandbox Code Playgroud)

c++ cmake visual-studio-code vcpkg

5
推荐指数
0
解决办法
8566
查看次数

如何在C#中的delphi dll中调用此函数

我在delphi代码中定义了这个函数:

procedure TestFLASHWNew(
    name: array of string; 
    ID: array of Integer;
    var d1:double
); stdcall;
Run Code Online (Sandbox Code Playgroud)

如何从C#定义和调用它?

c# delphi dll pinvoke

4
推荐指数
1
解决办法
2317
查看次数

添加Stl库并将文件包含到Visual Studio项目

我是VSc ++的新手,因此有一些简单的问题:)

我在VS 2012中创建了一个c ++项目,现在我想向其中添加stl,我该怎么做?

例如,当我将这个include添加到源代码中时,我收到错误,指出无法识别头文件。

#include <fstream.h>
Run Code Online (Sandbox Code Playgroud)

如何使用STL设置VS c ++项目?

c++ stl visual-c++

4
推荐指数
1
解决办法
3333
查看次数

如何在Visual Studio中初始化C++类中的静态const浮点数

我有这样的代码:

class MyClass
{
   private:
     static const int intvalue= 50;
     static const float floatvalue = 0.07f;
 };
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2010中,我收到此错误:

Myclasses.h(86): error C2864: 'MyClass::floatvalue : only static const integral data members can be initialized within a class
Run Code Online (Sandbox Code Playgroud)

那么如何在c ++中初始化静态常量float呢?

如果我使用构造函数,每次创建此类的对象时,该变量都被初始化,这是不好的.

显然代码是用Linux上的GCC编译的.

c++ visual-studio-2010

4
推荐指数
1
解决办法
2万
查看次数

std :: vector push_back在并行for循环中使用时失败

我有一个代码如下(简化代码):

for( int i = 0; i < input.rows; i++ )
{
    if(IsGoodMatch(input[I])
    { 
        Newvalues newValues;
        newValues.x1=input.x1;
        newValues.x2=input.x1*2;
        output.push_back( newValues);
    }
} 
Run Code Online (Sandbox Code Playgroud)

这段代码运行良好,但是如果我想使用omp parallel for使其并行,我在output.push_back上遇到错误,而且在向量调整大小期间,内存似乎已损坏.

有什么问题,我该如何解决?

如何确保只有一个线程可以随时将新项目插入到矢量中?

c++ parallel-processing vector openmp thread-safety

4
推荐指数
2
解决办法
5124
查看次数

如何在窗口中绘制一条线,填充xaml中的宽度

我有一个窗口,它的大小可以在运行时由用户更改.

我想绘制一条延伸到窗口宽度的水平线.

我可以通过后面的代码执行此操作(在窗口调整大小事件,更改行的大小),

但我正在寻找一种方法来改变xaml中的行大小,所以例如将x1,x2,y1和y2绑定到它们的父级(或窗口)大小,以便当窗口大小改变时该行调整大小.

我怎样才能做到这一点?

c# wpf xaml

4
推荐指数
2
解决办法
2万
查看次数

boost中的path :: string()和path :: generic_string()有什么区别?

boost::path::string()和之间的区别是什么boost::path::generic_string()?我何时应该使用它们?

c++ boost

4
推荐指数
1
解决办法
3895
查看次数

如何关闭(卸载)表单

我有一个包含一些按钮的表单,当用户单击按钮时,表单应该关闭(卸载).我使用了以下方法,但都生成了错误:

docmd.close me

unload me
Run Code Online (Sandbox Code Playgroud)

在VBA中关闭或卸载表单的最佳方法是什么(从表单中的代码)

ms-access vba access-vba

4
推荐指数
1
解决办法
3万
查看次数

cmake在Windows上使用\作为转义序列产生错误

我的cmake中有这样的内容:

set(MyLib_SRC $ENV{MyLib_DIR}/MyLib.cpp)
add_library(MyLibrary STATIC ${MyLib_SRC})
Run Code Online (Sandbox Code Playgroud)

但是当我运行cmake时,出现此错误:

CMake Warning (dev) at CMakeLists.txt:97 (add_library):
Syntax error in cmake code when parsing string

D:\New\Development\Lib/myLib.cpp

Invalid escape sequence \N

Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
"cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.
Run Code Online (Sandbox Code Playgroud)

我读了这个OS答案cmake分析错误:无效的转义序列\ o,但是如何将宏(哪个宏!)更改为函数?

env变量的值为

MyLib_DIR=D:\New\Development\Lib
Run Code Online (Sandbox Code Playgroud)

c++ windows cmake

4
推荐指数
2
解决办法
1910
查看次数