小编Oli*_*rth的帖子

可执行文件可以发现自己的路径吗?(Linux)的

可能重复:
如何在C中查找可执行文件的位置

我希望一个可执行文件能够发现自己的路径; 我有一种感觉,答案是"你不能这样做",但我希望这一点得到确认!

我不认为我可以使用getcwd(),因为我可能不会从同一目录执行它.我不认为我可以使用argv[0],因为它基于用于执行它的字符串.还有其他选择吗?

合理

真正的问题是我想在文件系统上放置一个可执行文件,并在其旁边放置一个默认配置文件.我希望可执行文件能够在运行时读取其配置文件,但我不想将此位置硬编码到可执行文件中,也不希望用户必须设置环境变量.如果对这种情况有更好的解决方案,我全都耳朵......

c linux

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

如何在Java 7中使用集合文字?

我试过以下一行:

Map<Character, Color> map={new Character('r'):Color.red,new Character('b'):Color.black};
Run Code Online (Sandbox Code Playgroud)

但Netbeans 7拒绝这一点,并显示错误消息'{' expected, ';' expected.

我将Source/Binary格式设置为'JDK 7',将平台设置为'JDK 1.7',还有什么我需要做的吗?

java collections

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

这种使用varargs安全吗?

我有一种util方法将类型的varargs转换为该类型的数组 - 它看起来像这样:

public K[] array(K... ks) {
    return ks;
}
Run Code Online (Sandbox Code Playgroud)

用例是这样的,不是在调用需要数组的方法时定义数组,而是简单地做数组(val1,val2,val3).

但是,IntelliJ给了我堆污染警告.我理解这在某种程度上意味着什么,但我对具体细节没有多少经验 - 所以,我想知道我是否可以添加@SafeVarargs以及这种方法是否真的安全.

IntelliJ说:

  问题简介第249行参数化vararg类型可能造成的堆污染

问题解决方案将最终和注释设为@SafeVarargs

K被声明为类的类型参数,以及V.

java

20
推荐指数
1
解决办法
947
查看次数

XHTML - <a>元素中允许哪些元素?

我知道span strongem.还有其他人吗?我正在尝试过滤链接中的文本,并且需要知道我应该保留哪些元素未经过滤?

html tags xhtml hyperlink

19
推荐指数
1
解决办法
7457
查看次数

为什么std :: list上的push_back改变了用rbegin初始化的反向迭代器?

根据我发现的一些STL文档,在std :: list中插入或删除元素不会使迭代器失效.这意味着允许循环遍历列表(从begin()to end()),然后使用push_front添加元素.

例如,在下面的代码中,我使用元素a,b和c初始化一个列表,然后遍历它并执行元素的push_front.结果应该是cbaabc,这正是我得到的:

std::list<std::string> testList;
testList.push_back("a");
testList.push_back("b");
testList.push_back("c");

for (std::list<std::string>::iterator itList = testList.begin(); itList != testList.end(); ++itList)
   testList.push_front(*itList);

for (std::list<std::string>::const_iterator itList = testList.begin(); itList != testList.end(); ++itList)
   std::cout << *itList << std::endl;
Run Code Online (Sandbox Code Playgroud)

当我使用反向迭代器(从rbegin()to 循环rend())并使用push_back时,我会期望类似的行为,即abccba的结果.但是,我得到了不同的结果:

std::list<std::string> testList;
testList.push_back("a");
testList.push_back("b");
testList.push_back("c");

for (std::list<std::string>::reverse_iterator itList = testList.rbegin(); itList != testList.rend(); ++itList)
   testList.push_back(*itList);

for (std::list<std::string>::const_iterator itList = testList.begin(); itList != testList.end(); ++itList)
   std::cout << *itList << std::endl;
Run Code Online (Sandbox Code Playgroud)

结果不是abccba,但是abcccba.这是正确的,还有一个额外的c.

看起来第一个push_back也改变了用rbegin()初始化的迭代器的值.在push_back之后,它不再指向列表中的第3个元素(之前是最后一个元素),而是指向第4个元素(现在是最后一个元素).

我使用Visual Studio …

c++ iterator stl

19
推荐指数
2
解决办法
5154
查看次数

不完整数组类型的p [0]和*p的等价性

考虑以下代码(它是由于此讨论而产生的):

#include <stdio.h>

void foo(int (*p)[]) {          // Argument has incomplete array type
    printf("%d\n", (*p)[1]);
    printf("%d\n", p[0][1]);    // Line 5
}

int main(void) {
    int a[] = { 5, 6, 7 };
    foo(&a);                    // Line 10
}
Run Code Online (Sandbox Code Playgroud)

GCC 4.3.4 抱怨错误消息:

prog.c: In function ‘foo’:
prog.c:5: error: invalid use of array with unspecified bounds
Run Code Online (Sandbox Code Playgroud)

在GCC 4.1.2相同的错误消息,并且似乎是不变的-std=c99,-Wall,-Wextra.

所以它对表达式不满意p[0],但它很满意*p,尽管这些(理论上)应该是等价的.如果我注释掉第5行,代码会编译并执行我"期望"(显示6)的内容.

大概有以下之一是真的:

  1. 我对C标准的理解是不正确的,这些表达式并不相同.
  2. GCC有一个错误.

我把钱放在(1)上.

问题:任何人都可以详细说明这种行为吗?

澄清: …

c arrays gcc pointers incomplete-type

19
推荐指数
2
解决办法
1723
查看次数

memset(&mystruct,0,sizeof mystruct)与mystruct = {0}相同;?

我正在读取默认情况下数组/结构的初始值,并有这个问题:

memset(&mystruct, 0, sizeof mystruct)一样的mystruct = { 0 };

如果不是,有什么区别?

c struct

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

将2D数组转换为指针指针

Activity solution[a][b];

...

Activity **mother = solution;
Run Code Online (Sandbox Code Playgroud)

我想将2D对象数组转换为指向指针的指针.我怎样才能做到这一点;

我在谷歌搜索它.但是我发现只有一个维数组的例子.

c++ static pointers

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

您已在此页面上多次添加Google Maps API.这可能会导致意外错误

使用谷歌地图时出现两个错误:

  1. 警告:您已在此页面上多次添加Google Maps API.这可能会导致意外错误.
  2. a为null(main.js)

我不知道两者之间是否有任何联系,但最终的结果是我的页面无法加载地图.

这是我的头标记:

<script type="text/javascript" src="../s/Jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="../s/jquery.placeholder.min.js"></script>
<script type="text/javascript" src="../s/index.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.widget.js"></script>

<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.position.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.autocomplete.js"></script>
<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script><script src="../dd/dealers_js.js" type="text/javascript"></script><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
Run Code Online (Sandbox Code Playgroud)

这是我称之为谷歌地图的功能:

function set_google_map(set_region)
{

        var zoom;
        var center;
        switch (set_region) {
            case "usa":
                zoom = 3;
                center = new google.maps.LatLng(37.09, -95.71);
                break;
            case "europe":
                zoom = 3;
                center = new google.maps.LatLng(48.58, 7.71);
                break;
            case "east":
                zoom = 3;
                center = new google.maps.LatLng(31, 121);
                break;
            default: …
Run Code Online (Sandbox Code Playgroud)

google-maps google-maps-api-3

18
推荐指数
3
解决办法
7万
查看次数

多态性与构造函数

我是一名AP Java学生,我正在练习考试.我遇到了这个问题,我不明白答案:

考虑以下类:

public class A
{
  public A() { methodOne(); }

  public void methodOne() { System.out.print("A"); }
}

public class B extends A
{
  public B() { System.out.print("*"); }

  public void methodOne() { System.out.print("B"); }
}
Run Code Online (Sandbox Code Playgroud)

执行以下代码时的输出是什么:

A obj = new B();
Run Code Online (Sandbox Code Playgroud)

正确的答案是B*.有人可以向我解释一下方法调用的顺序吗?

java polymorphism

18
推荐指数
1
解决办法
7638
查看次数