可能重复:
如何在C中查找可执行文件的位置
我希望一个可执行文件能够发现自己的路径; 我有一种感觉,答案是"你不能这样做",但我希望这一点得到确认!
我不认为我可以使用getcwd(),因为我可能不会从同一目录执行它.我不认为我可以使用argv[0],因为它基于用于执行它的字符串.还有其他选择吗?
合理
真正的问题是我想在文件系统上放置一个可执行文件,并在其旁边放置一个默认配置文件.我希望可执行文件能够在运行时读取其配置文件,但我不想将此位置硬编码到可执行文件中,也不希望用户必须设置环境变量.如果对这种情况有更好的解决方案,我全都耳朵......
我试过以下一行:
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',还有什么我需要做的吗?
我有一种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.
我知道span strong和em.还有其他人吗?我正在尝试过滤链接中的文本,并且需要知道我应该保留哪些元素未经过滤?
根据我发现的一些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 …
考虑以下代码(它是由于此讨论而产生的):
#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)上.
问题:任何人都可以详细说明这种行为吗?
澄清: …
我正在读取默认情况下数组/结构的初始值,并有这个问题:
是memset(&mystruct, 0, sizeof mystruct)一样的mystruct = { 0 };?
如果不是,有什么区别?
Activity solution[a][b];
...
Activity **mother = solution;
Run Code Online (Sandbox Code Playgroud)
我想将2D对象数组转换为指向指针的指针.我怎样才能做到这一点;
我在谷歌搜索它.但是我发现只有一个维数组的例子.
使用谷歌地图时出现两个错误:
我不知道两者之间是否有任何联系,但最终的结果是我的页面无法加载地图.
这是我的头标记:
<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) 我是一名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*.有人可以向我解释一下方法调用的顺序吗?