问题列表 - 第25633页

你如何在#ifdef中执行宏扩展?

我有一些相当通用的代码,它使用预处理器宏将某个前缀添加到其他宏上.这是一个简单的例子:

#define MY_VAR(x) prefix_##x
Run Code Online (Sandbox Code Playgroud)

"prefix_"实际上是在别处定义的,因此每次包含文件时它都会有所不同.它运行良好,但现在我有一些代码我想跳过如果其中一个令牌不存在,但这不起作用:

#if defined MY_VAR(hello)
Run Code Online (Sandbox Code Playgroud)

我希望它扩展到的是:

#ifdef prefix_hello
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何.我需要使用MY_VAR()宏来进行扩展,所以我不能只是对名称进行硬编码.(实际上对于一些测试代码,每次测试一堆类时,相同的代码都包含不同的前缀,我想跳过几个类的几个测试.)

这可能与C++预处理器有关吗?

更新:

这里有一些半可编译的代码可以进一步说明问题:(避免将其压缩到下面的注释中)

#define PREFIX hello

#define DO_COMBINE(p, x)  p ## _ ## x
#define COMBINE(p, x)     DO_COMBINE(p, x)
#define MY_VAR(x)         COMBINE(PREFIX, x)

// MY_VAR(test) should evaluate to hello_test

#define hello_test "blah blah"

// This doesn't work
#ifdef MY_VAR(test)
  printf("%s\n", MY_VAR(test));
#endif
Run Code Online (Sandbox Code Playgroud)

c++ macros stringification c-preprocessor

6
推荐指数
1
解决办法
2573
查看次数

在OpenGL中的填充动物

我见过OpenGL的金属/塑料/水/火/ ...着色器.

然而,它可以呈现毛皮般的东西,比如OpenGL中的填充动物/泰迪熊(我知道这可以使用渲染器/光线追踪器,但我想在OpenGl中进行).

如果你有指向GLSl着色器的指针,请指出我正确的方向.

谢谢!

[我猜测答案是否定的,因为毛皮需要的不仅仅是着色器 - 它几乎需要动态创建几何体 - 但我希望被证明是错误的)]

glsl

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

如何将这个数组分成三个并使用php将其放在<td>中?

我有一个十个数字的PHP数组

$arr = array("first" => "1", "second" =>"2", "Third" =>"3", "Fourth" =>"4",
"fifth" =>"5",, "sixth" =>"6", "seventh" =>"7", "eighth" =>"8", 
"ninth" =>"9","tenth"="10");
Run Code Online (Sandbox Code Playgroud)

我必须将这些值放在a中<td>,将数组<td>拆分为三个,这样我的td包含第一个td包含aray的前三个值</td>
第二个td包含aray <td>的下三个值</td>
第三个td包含<td>接下来的三个值aray </td>
如果剩下的值少于3,那么它必须在另一个td中说现在我有第十个值所以我的最后一个td必须包含第十个值

php arrays split

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

您使用#pragma编写的代码有什么用?

我从来没有理解#pragma once什么时候#ifndef #define #endif总是有效的需要.

我已经看到了#pragma comment与其他文件链接的用法,但使用IDE可以更轻松地设置编译器设置.

有哪些其他用法#pragma是有用的,但并不广为人知?

编辑:

只是#pragma指令列表之后.也许我应该再多说一下这个问题:

你和你一起写的代码#pragma有用吗?

.

答案一目了然:

感谢所有回答和/或评论的人.以下是我发现有用的一些输入的摘要:

  • Jason建议使用#pragma once#ifndef #define #endif允许更快地编译大型系统.史蒂夫跳进来支持这一点.
  • 280Z28领先并提到#pragma onceMSVC首选,而GCC编译器优化#ifndef #define #endif.因此,应该使用其中之一,而不是两者.
  • Jason还提到#pragma pack了二进制兼容性,而Clifford则反对这一点,因为可移植性和字节序可能存在问题.Evan提供了一个示例代码,Dennis告知大多数编译器会强制执行填充以进行对齐.
  • sblom建议#pragma warning用来隔离真正的问题,并禁用已经审查过的警告.
  • Evan建议#pragma comment(lib, header)在不重新设置IDE的情况下轻松移植项目.当然,这不太便携.
  • sbi #pragma message为VC用户提供了一个很好的技巧来输出带有行号信息的消息.詹姆斯更进一步,允许errorwarning匹配MSVC的消息,并将适当显示,如错误列表.
  • Chris提供#pragma region了能够在MSVC中使用自定义消息折叠代码.

哇,等等,如果我想发布使用#pragmas除非必要,该怎么办?

  • 克利福德从另一个角度发布了关于使用的观点#pragma.荣誉.

如果SOers感觉到发布答案的冲动,我会在此列表中添加更多内容.感谢大家!

c++ compiler-construction pragma

22
推荐指数
4
解决办法
7603
查看次数

php cookie无法正常工作

我正在尝试使用带身份验证的cookie.

此页面一旦进入用户并通过即可运行

   <?
    if ((!$_POST[username]) || (!$_POST[password])) {
        header("Location: show_login.html");
        exit;
    }
    $db_name = "testDB";
    $table_name = "auth_users";
    $connection = @mysql_connect("localhost", "user", "pass") or die(mysql_error());
    $db = @mysql_select_db($db_name, $connection) or die(mysql_error());
    $sql = "SELECT * FROM $table_name WHERE username ='$_POST[username]' AND password = password('$_POST[password]')";
    $result = @mysql_query($sql, $connection) or die(mysql_error());
    $num = mysql_num_rows($result);
        if ($num != 0) {
            $cookie_name = "auth";
            $cookie_value = "ok";
            $cookie_expire = "0";
            $cookie_domain = "domain.com.au";
            setcookie($cookie_name, $cookis_value, $cookie_expire, "/", $cookie_domain, 0);
            $display_block = "
            <p><strong>Secret …
Run Code Online (Sandbox Code Playgroud)

php cookies

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

验证此日期格式的最简单方法是什么,例如,31-JUL-2010(仅限此fmt)

我想以这种格式轻松验证日期,只有这种格式.任何otehr格式都应视为无效.

vb.net

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

什么是好的Perl CGI教程?

我要学习Perl CGI.请为CGI教程推荐一个好的URL或书.

perl cgi

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

eclipse插件开发

我想开发一个eclipse插件.哪种方式最好?

eclipse eclipse-plugin

6
推荐指数
1
解决办法
985
查看次数

哪个utf8校对最好?

我想要一个UTF8排序规则来支持:

  • 英语
  • 波斯语
  • 阿拉伯
  • 法国
  • 日本
  • 中文

是否UTF8_GENERAL_CI支持所有这些语言?

mysql collation

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

从javascript类中的"私有"方法访问"公共"方法

有没有办法从类中的"私有"函数调用"公共"javascript函数?

看看下面的课程:

function Class()
{
    this.publicMethod = function()
    {
        alert("hello");
    }

    privateMethod = function()
    {
        publicMethod();
    }

    this.test = function()
    {
        privateMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我运行的代码:

var class = new Class();
class.test();
Run Code Online (Sandbox Code Playgroud)

Firebug给出了这个错误:

publicMethod未定义:[中断此错误] publicMethod();

是否有其他方法可以在privateMethod()中调用publicMethod()而无需访问全局类变量[即class.publicMethod()]?

javascript oop private public

12
推荐指数
2
解决办法
4147
查看次数