在C++(G ++具体)中,可以连接两个没有空格的宏定义来创建第三个定义吗?例如,我该怎么做
#define _LOAD _mm256_load
#define _FLOAT ps
Run Code Online (Sandbox Code Playgroud)
并因此对它们进行操作
#define _LOAD_FLOAT ****do something with _FLOAT and _LOAD here *****
Run Code Online (Sandbox Code Playgroud)
创建功能上等同于以下内容的定义:
#define _LOAD_FLOAT _mm256_load_ps
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#include <stdlib.h>
#define MAX 15 //line that give problems
int linearSearch(int v[], int MAX, int valore);
int main()
{
int ris, valore, v[]={1,1,1,1,1,1,1,1,1,12,1,1,1,1,1};
scanf("%d", &valore);
ris = linearSearch(v, MAX, valore);
printf("%d", ris);
return 0;
}
int linearSearch(int v[], int MAX, int valore)
{
int i;
for (i=0;i<MAX;i++)
{
if(valore==v[i])
return i;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码在编译时报告错误?如果我用预处理器指令替换它,为什么它运行正常
const int MAX = 15;
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的宏,我只想将其输出类型转换为int.怎么做?
#define Numbits(A) (sizeof(A)*CHAR_BIT)
Run Code Online (Sandbox Code Playgroud)
我试过了:
#define int Numbits(A)({int val; val = sizeof(A)*CHAR_BIT; return val;})
Run Code Online (Sandbox Code Playgroud)
但它也行不通
我正在尝试编写一个简单的宏,该宏基于调用的条件break或continue在调用它的循环中的条件。下面是代码:
#include <iostream>
#define BC_IF_EVEN(BC) if(i % 2 == 0) BC
using namespace std;
int main() {
int i = 0;
while(i++ < 30) {
if(i < 15)
BC_IF_EVEN(continue);
else
BC_IF_EVEN(break);
cout << i << " ";
}
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出是:1 3 5 7 9 11 13 15,但是上面的代码输出:1 3 5 7 9 11 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30因为 …
我的项目中有file1.h和file1.cpp.我在file1.h中有多个包含Guard,以避免同一文件的多个包含.我在file1.cpp文件中包含了file1.h文件.我运行第三方工具(parasoft)来查找与项目有关的任何问题,它已经确定file1.cpp文件中缺少Multiple Include Guard.我的问题是在file1.cpp文件中需要多个包含保护?如果不需要,为什么我在文件*.cpp文件中出错?请帮我....
我在编译boost.bimap库时遇到问题.我的测试程序是一个空白的主函数,只有一个include指令(如#include <boost/bimap.hpp>).经过一些调查后,我发现预处理器已经从头文件中做了一些有趣的构造,如:
struct A { struct B{}; struct B; };
Run Code Online (Sandbox Code Playgroud)
我不知道这是否正确,但gcc接受它,而clang和icc则不接受.谁是对的,我该怎么做才能用bimap库编译程序?不幸的是,我不能在这种情况下使用gcc.
我想定义一个宏,例如:
#define EX(X) (myArray # X + otherArray # X)
Run Code Online (Sandbox Code Playgroud)
所以当我写:
v = EX([a+1][a+2]);
Run Code Online (Sandbox Code Playgroud)
这将评估为:
v = myArray[a+1][a+2] + otherArray[a+1][a+2];
Run Code Online (Sandbox Code Playgroud)
但这不起作用,并以某种方式添加了额外的括号.
我试图搜索#define/#const默认列表(例如DEBUG和TRACE),但在互联网上没有找到任何内容......
我有一个源文件,用于通用帮助器方法(实用程序,如自定义操作符,扩展使用字符串,弹出一个带有属性网格编辑器的表单等),在多个项目之间共享(使用添加现有项 - >链接) .
定义的一些函数是相对于WinForms的,这导致编译器在构建Console项目时抱怨它,因为缺少对System.Windows.Forms的引用.
是否有#Const或#define告诉当前的应用程序类型(<MyType>WindowsForms</MyType>)?我不想将它拆分为两个文件,所以我正在寻找一些不涉及创建类库的工作方式,从控制台引用winforms,以及为每个项目定义一个常量(这是因为我觉得不能以某种方式使用项目属性中已经指定的应用程序类型).
我认为这个问题可以概括为:
(如何)我可以确定在编译时是否在项目中引用了assembly \namespace以应用条件编译?
我经常在我的代码中有这样的陈述:
(b != 0) ? a / b : a
Run Code Online (Sandbox Code Playgroud)
在速度和最佳C++实践方面,做功能更好
float divifnotzero(a,b) { ... return ... }
Run Code Online (Sandbox Code Playgroud)
或像这样的预处理器宏?
#define divifnotzero(a,b) ((b!=0)?a/b:a)
Run Code Online (Sandbox Code Playgroud) 我们都知道c不支持运算符重载.任何人都告诉我,如果是这样,那么我们如何能够使用#include指令中的少于符号并进行比较呢?或者提供的功能被称为其他东西并用语言定义?