小编Tho*_*mas的帖子

C 预处理器:从参数中删除引号

我在构建系统中滥用C预处理器,从同一源文件生成“自述”纯文本文件和网页。构造是这样的:

实际的定义在data.h

#define WEBSITE "http://example.com"
Run Code Online (Sandbox Code Playgroud)

请注意,//URL 中的 必须加引号,否则将被视为评论的开始。,在参数中使用 a 时也会出现类似的问题;引号是必需的,否则逗号将被视为参数分隔符。

使用此标头,文件将通过Creadme.txt.pp预处理器运行:

#include "data.h"
Visit the website at WEBSITE!
Run Code Online (Sandbox Code Playgroud)

当然,预处理器的输出是:

Visit the website at "http://example.com"!
Run Code Online (Sandbox Code Playgroud)

引号出现在输出中。有什么方法或解决方法可以让此代码给出输出:

Visit the website at http://example.com!
Run Code Online (Sandbox Code Playgroud)

我正在使用 Visual C++ 2008。我知道预处理器不是这项工作的理想工具;也欢迎使用其他内置 VC++ 功能的建议。(我尝试使用 XSLT 来构建 XML,但是不可能将一个 XML 文件包含到另一个 XML 文件中,这真是令人头疼。)

quotes macros c-preprocessor

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

如何编写仅在DEBUG #defined时编译的'if'条件?

我需要一些帮助,为'if-condition'编写一个宏,只有在#define指令定义了DEBUG标志时才会编译.

这是一个说明我想要的例子.第一段代码显示了使用#ifdef编写if条件的常用方法.

#ifdef DEBUG
if( rv == false )
{
     string errorStr = "error in return value" ;
     cout << errorStr << endl ;
     throw( Exception(errorStr) ) ;
}
Run Code Online (Sandbox Code Playgroud)

我想以类似下面的方式编写它:

DEBUG_IF( rv==false )
{
     same code as above
}
Run Code Online (Sandbox Code Playgroud)

它似乎很简单,但我无法定义一个可以做到这一点的宏.如果有人以前经历过这种情况,请帮忙.

谢谢.

c++ macros

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

MySQL查询:在一行中以逗号分隔的字符串连接表和显示记录

假设我的MySQL数据库中有以下两个表:

Table 1:: EMP: EmpID, EmpName
eg. (1, 'John'), (2,'Alex'),(3,'Tom')

Table 2:: Team: TeamID, ManagerID, MemberID
eg. record1: (Team1, 1, 2), record2: (Team1, 1, 3) 
Run Code Online (Sandbox Code Playgroud)

所以有一个团队有id team1,John是经理,Alex和Tom是其成员.

我想以下列方式在屏幕上显示Team表的记录

| Team  | Manager | Members   |
| team1 | John    | Alex, Tom |
Run Code Online (Sandbox Code Playgroud)

什么是SQL查询,它将加入上述两个表,并在基于memberID时返回成员的名称.

此外,结果将显示为包含由逗号分隔的所有团队成员的1行.

如果有更好的方法来设计这两个表,那么请同样建议.非常感谢.

谢谢.

mysql sql join

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

如何使“选择”在单列中显示选项?

我有一个随机情况,当我在 bash 中使用多项选择菜单并向我的列表选择添加更多项目时,菜单不再逐行堆叠

echo "         [?] What would you like to do:"
echo
# End

opt=""
select recon in Enumeration General Web-Recon Services Msfvenom Other
do
opt="$recon"
case $recon in 
Enumeration|General|Web-Recon|Services|Msfvenon|Other)   
        break
        ;;
*)
        echo # Spacer
        echo "You Sure? Try it again" 
        ;;
esac
echo $recon
done
Run Code Online (Sandbox Code Playgroud)

我得到的看起来像这样:

         [?] What would you like to do:

1) Enumeration  3) Web-Recon    5) Msfvenom
2) General      4) Services     6) Other
#? 
Run Code Online (Sandbox Code Playgroud)

但是我更喜欢它看起来像这样:

1) Enumeration
2) General  
3) Web-Recon
4) Services 
5) Msfvenom …
Run Code Online (Sandbox Code Playgroud)

linux bash select

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

如何在 Firestore 子文档上创建索引豁免?

我们有一个数据库结构如下:

  • 收藏 foo
    • 文件
      • 收藏 bar
        • 包含多个字段的文档(接近 1 MB 的限制)

尝试将文档写入bar包含 34571 个字段的集合,我得到(来自 Go API):

rpc 错误:代码 = InvalidArgument desc = 实体的内置索引条目过多

好吧,好吧,看来我需要添加一个豁免:

大型数组或地图字段

大型数组或地图字段可以接近每个文档 20,000 个索引条目的限制。如果您不是基于大型数组或地图字段进行查询,则应将其从索引中排除。

但是如何?控制台只允许我设置单个集合名称和单个字段路径,并且不接受斜杠:

“添加豁免”对话框

我尝试了其他组合,但/Collection ID或 中都不被接受Field path,并且使用.,虽然没有明确禁止,但在尝试保存豁免时会导致一般错误。我也不确定是否*允许。

google-cloud-firestore

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

尽管使用了 -isystem,为什么 clang 在我的标题上报告警告,而 gcc 没有报告?

这个问题略有关系,但不一样。

在 Arch Linux 上使用 clang 7.0.1。我喜欢干净的代码,所以我想启用所有警告并将它们视为错误。

问题是我的构建中有一些自动生成的文件,这些文件并非没有警告,例如:

生成/foo.h

inline void foo(int unused) {  // warning: unused parameter 'unused'
}
Run Code Online (Sandbox Code Playgroud)

生成/foo.cc

#include "foo.h"

// There is actual code here, but it doesn't matter.
Run Code Online (Sandbox Code Playgroud)

由于这些文件是由第三方工具生成的,我无法轻易修改它们,所以我使用-isystem抑制generated目录中的所有警告。

我还有一个依赖于生成的主文件:

主文件

#include "foo.h"

int main() {
  foo(42);
}
Run Code Online (Sandbox Code Playgroud)

使用 gcc,即使启用了所有警告,我也可以很好地编译它。

$ g++ -Wall -Wextra -pedantic -Werror -isystem generated -omain main.cc generated/foo.cc
Run Code Online (Sandbox Code Playgroud)

但是,使用 clang,它无法编译generated/foo.cc

$ clang++ -Wall -Wextra -pedantic -Werror -isystem generated -omain main.cc generated/foo.cc
In file included …
Run Code Online (Sandbox Code Playgroud)

c c++ clang

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

为什么 JSON_UNESCAPED_LINE_TERMINATORS 没有转义我的换行符?

根据文档,我希望在编码 JSON 时JSON_UNESCAPED_LINE_TERMINATORS保留\n未转义的换行符 ( ) 字符,以便保留实际的换行符:

JSON_UNESCAPED_LINE_TERMINATORS(整数)行终止符在提供
时保持未转义。JSON_UNESCAPED_UNICODE它使用与 PHP 7.1 之前相同的行为,但没有此常量。从 PHP 7.1.0 开始可用。

最小的例子:

$ php -r 'echo json_encode(["foo" => "bar\nbaz"], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_LINE_TERMINATORS) . "\n";'
{"foo":"bar\nbaz"}
Run Code Online (Sandbox Code Playgroud)

我期望:

{"foo":"bar
baz"}
Run Code Online (Sandbox Code Playgroud)

(请注意,这是有效的 JSON;仅\" 必须在字符串中转义。)

为什么这个选项没有按预期工作?

php json

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

为什么invokeAll()不会返回?

我大致有这个代码:

ExecutorService threader = Executors.newFixedThreadPool(queue.size());
List futures = threader.invokeAll(queue);
Run Code Online (Sandbox Code Playgroud)

我调试了这个,并且在队列中的所有线程都完成之前,invokeAll似乎没有返回.发生这种情况的任何原因.

java concurrency

3
推荐指数
2
解决办法
2954
查看次数

在这种情况下如何进行模板类型推理工作?

再一次,我希望C++有更强的typedefs:

#include <vector>

template<typename T>
struct A {
    typedef std::vector<T> List;
};

template<typename T>
void processList(typename A<T>::List list) {
    // ...
}

int main() {
    A<int>::List list;
    processList<int>(list); // This works.
    processList(list);      // This doesn't.
}
Run Code Online (Sandbox Code Playgroud)

显然,编译器看作list是a std::vector<int>而不是a A<int>::List,因此它无法与A<T>::List预期的匹配.

在实际情况中,它是一个较长的类型名称,经常重复,这是一个麻烦.除了让processList接受之外vector,有没有办法让模板类型推断为我工作?

c++ templates type-inference

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

如何在python中生成50种随机颜色的列表?

给定color = ["red","blue","green","yellow","purple","orange","white","black"]生成并打印50种随机颜色的列表.您将需要使用随机模块来获取随机数.使用范围和地图生成所需的数字量.然后使用map将数字转换为颜色.打印结果.

这是一个我已经给出的问题,到目前为止这是我的代码

colour = [ "red", "blue", "green", "yellow", "purple", "orange", "white", "black" ]

number=random.randint(1,9)

number.range(50)
Run Code Online (Sandbox Code Playgroud)

我假设这个变量在1-9之间选择随机数,然后生成其中的50个?我现在需要一些方法将数字与颜色联系起来..我知道这个问题很模糊,但如果有人能指出我正确的方向,那就太棒了!

python random map range

3
推荐指数
3
解决办法
9922
查看次数